如何在MySQL表中的列中添加分组值

3

我有一个MySQL表格,如下所示:

   **ip                  page                date                 page_Views
127.0.0.1              index.php           2012-07-09              25
182.445.11.1           abc.php             2012-07-09              11
116.142.24.7           index.php           2012-07-09              3 

我想提取按页面分组的page_views列。
这意味着对于'index.php',它显示page_view = 28。
我正在使用此查询:
SELECT * FROM stats_tracker GROUP BY page ORDER BY stats_tracker.page_views DESC
使用此查询,我按页面分组了page_views,但没有添加。
根据我的上述查询,index.php的page_views = 25。
1个回答

9

您需要使用SUM聚合函数:

SELECT
  ip,
  page,
  CONCAT(MIN(date), " - ", MAX(date)) as date_range,
  SUM(page_views) as total_page_views
FROM stats_tracker
GROUP BY page
ORDER BY total_page_views DESC

基本上的推理是MySQL不知道你希望在分组时如何组合值。有时你想要计数,有时要求和,甚至可以取平均值。请查看MySQL聚合函数页面

请注意我的日期处理方式,因为如果没有应用某些聚合函数,它们也会失去意义。 - Chris Trahey
日期处理的语法可能有误,我暂时将其删除。请告诉我您想如何使用日期信息。 - Chris Trahey
啊哈,@PugganSe搞定了...我完全忽略了FROM子句。 :-/ - Chris Trahey
问题!您在查询中没有放置表名称,为什么? - A. Rehman Javed
为什么?嘿...是一个简单的错误。对于这种混淆非常抱歉。用户Puggan Se编辑了我的答案并加以包含,感谢Puggan Se。 - Chris Trahey
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接