我的数据就像
HRS - SVDATE
1 - 1/1/2017
1 - 1/1/2017
1 - 2/1/2017
2 - 1/1/2017
2 - 1/1/2017
2 - 1/1/2017
3 - 3/1/2017
4 - 1/1/2017
4 - 2/1/2017
4 - 3/1/2017
原谅我在列之间使用了aiphen( - )
在这里,我需要获得HRS和SVDATE的不同记录,其中包括> 2 比如下面只有我想要的行
HRS - SVDATE
1 - 1/1/2017
1 - 2/1/2017
4 - 1/1/2017
4 - 2/1/2017
4 - 3/1/2017
我尝试使用HRS分组,SVDATE HAVING COUNT(小时)> 1
我得到HRS = 1计数= 3但我需要HRS = 1计数= 2(这里只有两个不符合SVDATE的那些)
请帮助如何为此编写查询
答案 0 :(得分:1)
您的COUNT(hrs)
只计算hrs
为非NULL
的记录数。
您需要COUNT(DISTINCT hrs)
代替:
SELECT
svdate,
COUNT(DISTINCT hrs) AS NrOfDistinctHours,
COUNT(*) AS NrOfRows
FROM ...
GROUP BY svdate
HAVING COUNT(DISTINCT hrs) > 1
答案 1 :(得分:0)
如果我正确理解你的问题,它会给你正在寻找的输出
SELECT DISTINCT t1.svdate,t1.hrs from table t1
JOIN (SELECT hrs from
(SELECT DISTINCT svdate,hrs FROM table)
GROUP BY hrs
HAVING COUNT(hrs) > 1) t2
ON t1.hrs=t2.hrs