MySQL Full Group by

时间:2018-02-15 03:39:37

标签: mysql sql select group-by count

由于我的web主机更新了MySQL服务器版本,我的旧SQL查询不再起作用了:

select COUNT(ID) AS Anzahl, 
       DAY(STR_TO_DATE(created_at, '%Y-%m-%d')) AS Datum 
from `leads` 
where `created_at` >= 2018-02-01 
      and `created_at` <= 2018-02-15 
      and `shopID` = 20 
group by DAY(created_at) 
order by DAY(created_at) asc

这意味着,我必须通过查询创建一个完整的组。我已经读过这个article,但我并没有真正理解它。

  

我应该列出所有唯一的列

这就是我没有得到的东西。如果我想计算ID,我无法通过ID查询创建组,因为在这种情况下,我的计数始终为1。有人可以向我解释一下完整的小组是如何工作的以及我的陈述如何与完整的小组讨论一致?

2 个答案:

答案 0 :(得分:0)

只需在select中使用与group by

中相同的表达式
select COUNT(ID) AS Anzahl, DAY(created_at) AS Datum
from `leads` l
where `created_at` >= '2018-02-01' and
      `created_at` <= '2018-02-15' and
      `shopID` = 20
group by DAY(created_at)
order by DAY(created_at) asc;

您还需要围绕日期常量的单引号。

答案 1 :(得分:0)

您的selectgroup by列并不匹配。你应该让它们一样。请尝试以下查询:

select COUNT(ID) AS Anzahl, 
       DAY(STR_TO_DATE(created_at, '%Y-%m-%d')) AS Datum 
from `leads` 
where `created_at` >= 2018-02-01 
      and `created_at` <= 2018-02-15 
      and `shopID` = 20 
group by Datum 
order by Datum asc