MySQL 完整分组依据

标签 mysql sql select group-by count

由于我的网络主机已更新 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但我不太明白。

I should name all columns which are unique

这就是我不明白的。如果我想对 ID 进行计数,则无法创建按 ID 进行分组的查询,因为在这种情况下,我的计数始终为 1。有人可以向我解释一下完整的 group by 是如何工作的以及我的语句如何使用完整的 group by 语句吗?

最佳答案

只需在 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;

您还需要将日期常量用单引号引起来。

关于MySQL 完整分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48799616/

相关文章:

sql - Oracle SQL,总是在带有联合的查询中显示三行

mysql - 计算sql中所有对象连续几天的差值

MySQL 按复杂脚本分组

mysql - 将 MySQL 列别名设置为计算日期

SQLite 按所选日期范围内的所有日期进行分组,即使数据不存在

php - MySQL从表中获取数据并检查表行中是否存在userid

php - MYSQL如何取消选择当前年份

c# - 如何在数据表中选择不同的行并将其存储到数组中

SQL Server 在列上匹配两个表

javascript - ajax 无法在购物车中单击