如何通过组和使用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