您好,我有以下疑问,我想计算一个月内输入数据的次数。 我的数据库是:
我有以下查询。
SELECT DISTINCT (date)
FROM employee
WHERE date
IN (SELECT date
FROM employee
GROUP BY date
HAVING count( date ) >0)
ORDER BY date DESC;
这个查询给了我: 日期: 二千零十七分之十 二千〇一十七分之八 二千〇一十七分之九
但我希望你能给我这样的东西。
我希望我已经解释了我的问候。
答案 0 :(得分:3)
你过度复杂了;不需要子查询或DISTINCT。
SELECT `date`, count(*)
FROM `employee`
GROUP BY `date`
HAVING count(*) > 0
ORDER BY `date` DESC;
我对于HAVING count() > 0
的原因有点困惑。事物可以零计数的唯一方法意味着它不在表中(因此无论如何都不会出现)。
其他观察:
date
括在SELECT子句中的括号中绝对没有效果。 (另外,DISTINCT 几乎永远不适合GROUPing查询。)COUNT(somefield)
与COUNT(1)
,COUNT(*)
相同。如果您想要唯一值,您可以COUNT(DISTINCT somefield)
;但COUNT(DISTINCT groupingfield)
没有意义,因为这总是会导致1。答案 1 :(得分:1)
你写的查询有点复杂。区别和分组在这里为你做同样的事情。当您按计数执行分组时,将自动为您提供分组行的计数。此外,您还将拥有独特的日期。试试这个。
SELECT count(date), date
FROM employee
GROUP BY date
HAVING count( date ) >0
ORDER BY date DESC;