查询SELECT DISTINCT count()

时间:2017-10-12 16:05:02

标签: mysql sql

您好,我有以下疑问,我想计算一个月内输入数据的次数。 我的数据库是:

  • 日期:
  • 二千零十分之十
  • 二千零十分之十
  • 09/2010
  • 08/2010

我有以下查询。

SELECT DISTINCT (date)
    FROM employee 
    WHERE date 
    IN (SELECT date 
    FROM employee 
GROUP BY date 
HAVING count( date ) >0) 
ORDER BY date DESC;

这个查询给了我: 日期: 二千零十七分之十 二千〇一十七分之八 二千〇一十七分之九

但我希望你能给我这样的东西。

  • 计数|日期
  • 2 | 10/2017
  • 1 | 9/2017
  • 1 | 10/2017

我希望我已经解释了我的问候。

2 个答案:

答案 0 :(得分:3)

你过度复杂了;不需要子查询或DISTINCT。

SELECT `date`, count(*) 
FROM `employee`
GROUP BY `date`
HAVING count(*) > 0
ORDER BY `date` DESC;

我对于HAVING count() > 0的原因有点困惑。事物可以零计数的唯一方法意味着它不在表中(因此无论如何都不会出现)。

其他观察:

  • DISTINCT不是一个功能;将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;