MySQL GROUP BY有两个计数

时间:2013-03-27 15:17:35

标签: mysql count

我有一个表,我感兴趣的是两列,created_at和total_time。 我想执行一个查询,该查询按照创建它们的星期几对记录进行分组,计算总计数以及总计数和总计时数> 5。

例如,如果星期五有6条记录,其中4条有时间> 5,查询应该在星期五返回:

星期五| 6 | 4

我有一天和计数> 5像这样工作:

SELECT
DAYNAME(created_at) as weekday,
COUNT(*) AS count
FROM my_table
WHERE
total_time > 5
GROUP BY weekday
ORDER BY count DESC

但有没有一种方法可以包括总计数(无论total_time)?

任何建议表示赞赏。

由于

1 个答案:

答案 0 :(得分:3)

您可以同时使用以下两种方法:

SELECT DAYNAME(created_at) as weekday,
  COUNT(*) AS count,
  sum(case when total_time > 5 then 1 else 0 end) TimeOver5
FROM my_table
GROUP BY weekday
ORDER BY count DESC

请参阅SQL Fiddle with Demo

这使用带有CASE表达式的聚合函数来获取total_time >5

所在的行