繁体   English   中英

查询SELECT DISTINCT count()

[英]Query SELECT DISTINCT count()

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

  • 日期:
  • 10/2010
  • 10/2010
  • 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; 

这个查询给我:日期:10/2017 8/2017 9/2017

但是我要你给我这样的东西。

  • 计数| 日期
  • 2 | 二千零十七分之十
  • 1 | 二千〇一十七分之九
  • 1 | 二千零十七分之十

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

您太复杂了; 不需要子查询或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。

您编写的查询有点复杂。 唯一身份和分组依据在这里为您做同样的事情。 当您按计数分组时,将自动为您提供分组行的计数。 此外,您还将有独特的日期。 尝试这个。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM