如何通过组和使用MySQL

我有一个看起来像这样的数据统计:如何通过组和使用MySQL

ID post_author post_title guid

3309 21 Should somebody not yet on SQL 2008 wait for SQL 2008 R2, since it's near release? http://sql.stackexchange.com/questions/379/should-somebody-not-yet-on-sql-2008-wait-for-sql-2008-r2-since-its-near-release

1695 429 How do we politely decline well meaning advice from the Grandmother? http://moms4mom.stackexchange.com/questions/1208/how-do-we-politely-decline-well-meaning-advice-from-the-grandmother

556 173 Books on how to be a great dad http://moms4mom.stackexchange.com/questions/1042/books-on-how-to-be-a-great-dad

160 30 Building an ice hockey net cam http://photo.stackexchange.com/questions/8/building-an-ice-hockey-net-cam

159 30 Generic commercial photo release form http://photo.stackexchange.com/questions/4/generic-commercial-photo-release-form

我需要创建一个查询组的GUID域(根URL)的部分数据并计算每个POST_AUTHOR。

我找了会是这样的结果:

Site Count of Authors

http://sql.stackexchange.com 1

http://moms4mom.stackexchange.com 2

http://photo.stackexchange.com 2

我将不胜感激,如果有人帮我构造SQL。

回答:

SELECT COUNT(POST_AUTHOR) AS AUTHOR_COUNT, GUID FROM TABLE_NAME GROUP BY GUID 

回答:

构建这样的查询可能是可能的,但不会被优化。

您应该在您的表格中添加一个列,其中包含该网站的ID。 然后添加一个新的表,它将为网站提供一个预先准备好的数据:域,路径,资源,无论是http还是https等

这样,您可以更灵活地搜索,并且会更快,因为我假设你有几个插入和大量的读取。

回答:

问题是如何提取URL的根部分。如果我们能确保每个URL都会有至少3个斜线,这将工作,使用substring_index

select substring_index(guid,'/',3) as site, count(id) as authors from table 

group by substring_index(guid,'/',3)

当然,如果你只是在插入时与该网站添加一个额外的列,一切会更快,更清洁和更安全(你不必复杂查询来处理只有两个斜线的guid)

回答:

写一个SQL FUNCTION - 例如调用guid_extract(guid),它提取相关的信息,然后你可以添加它到您的选择中的列::

SELECT stuff, otherstuff, guid_extract(guid) as site 

...

GROUP BY site;

以上是 如何通过组和使用MySQL 的全部内容, 来源链接: utcz.com/qa/263556.html

回到顶部