您好,我有以下疑问我想统计一个月内输入数据的次数。 我的数据库是:
我有以下疑问。
SELECT DISTINCT (date)
FROM employee
WHERE date
IN (SELECT date
FROM employee
GROUP BY date
HAVING count( date ) >0)
ORDER BY date DESC;
这个查询给了我: 日期: 10/2017 8/2017 9/2017
但我希望你给我类似的东西。
我希望我已经表达了我的问候。
你把事情搞得太复杂了;不需要子查询或 DISTINCT。
SELECT `date`, count(*)
FROM `employee`
GROUP BY `date`
HAVING count(*) > 0
ORDER BY `date` DESC;
我有点困惑你会有什么理由
HAVING count() > 0
;某些东西计数为零的唯一方法意味着它不在表中(因此无论如何也不会显示)。
其他观察结果:
date
括在括号中绝对没有效果。 (此外,DISTINCT 几乎永远不适合 GROUPing 查询。)COUNT(somefield)
与COUNT(1)
、COUNT(*)
相同。如果您想要计算 unique 值,您可以执行 COUNT(DISTINCT somefield)
;但 COUNT(DISTINCT groupingfield)
没有意义,因为这总是会导致 1。您编写的查询有点复杂。 Distinct 和 group by 在这里为您做同样的事情。当您按计数进行分组时,将自动为您提供分组行数。此外,您还将拥有独特的日期。试试这个。
SELECT count(date), date
FROM employee
GROUP BY date
HAVING count( date ) >0
ORDER BY date DESC;
不需要使用“HAVING”,只需像下面这样使用:
SELECT `date`, count(*)
FROM `employee`
GROUP BY `date`
ORDER BY `date` DESC;