【问题标题】:how to group by and count using MySQL如何使用 MySQL 进行分组和计数
【发布时间】:2010-12-08 01:42:41
【问题描述】:

我的数据如下所示:

ID post_author post_title guid 3309 21 还没有使用 SQL 2008 的人是否应该等待 SQL 2008 R2,因为它即将发布? http://sql.stackexchange.com/questions/379/should-somebody-not-yet-on-sql-2008-wait-for-sql-2008-r2-since-its-near-release 1695 429 我们如何礼貌地拒绝祖母善意的建议? http://moms4mom.stackexchange.com/questions/1208/how-do-we-politely-decline-well-meaning-advice-from-the-grandmother 556 173 本书关于如何成为一个好爸爸 http://moms4mom.stackexchange.com/questions/1042/books-on-how-to-be-a-great-dad 160 30 构建冰球网络凸轮 http://photo.stackexchange.com/questions/8/building-an-ice-hockey-net-cam 159 30 通用商业照片发布表格 http://photo.stackexchange.com/questions/4/generic-commercial-photo-release-form

我需要创建一个查询,对部分 GUID 字段(根 URL)上的数据进行分组,并计算每个字段的 POST_AUTHOR。

我正在寻找的结果是这样的:

网站作者数 http://sql.stackexchange.com 1 http://moms4mom.stackexchange.com 2 http://photo.stackexchange.com 2

如果有人帮我构建 sql,我将不胜感激。

【问题讨论】:

    标签: sql mysql count group-by


    【解决方案1】:

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

    SELECT stuff, otherstuff, guid_extract(guid) as site
      ...
      GROUP BY site;
    

    【讨论】:

      【解决方案2】:

      问题是如何提取 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)

      【讨论】:

        【解决方案3】:

        可能可以构造这样的查询,但不会进行优化。

        您应该在表格中添加一列,该列将具有该网站的 ID。 然后添加一个新表,其中包含站点的预解析数据:域、路径、资源、http 还是 https 等

        这样您可以更灵活地进行搜索,并且速度会更快,因为我假设您的插入次数很少,读取次数也很多。

        【讨论】:

          【解决方案4】:
          SELECT COUNT(POST_AUTHOR) AS AUTHOR_COUNT, GUID FROM TABLE_NAME GROUP BY GUID
          

          【讨论】:

          • 感谢 Virat,但我只想对部分 GUID 字段、根 url 进行分组,直到 .com
          猜你喜欢
          • 1970-01-01
          • 2013-05-20
          • 2015-09-24
          • 1970-01-01
          • 2016-08-08
          • 1970-01-01
          • 2012-03-29
          • 1970-01-01
          • 2011-11-17
          相关资源
          最近更新 更多