在sql中具有相同计数的第二个最小值?

时间:2015-05-20 12:59:00

标签: sql oracle

我这样的表

 A     B
7499   300
7521   400
7654   500
7698   0
7844   200
7900   0

我正在尝试这样

select deptno,count(1) ,min(comm)from emp
where deptno=30
group by deptno

我正在获得输出

count min(B)
6         0

但我需要

  count min(B)
6         200

,不使用b> 0概念

2 个答案:

答案 0 :(得分:2)

您可以使用CASE这样过滤掉comm > 0

select deptno,count(1) ,min(CASE WHEN comm > 0 THEN comm ELSE NULL END)
from emp
where deptno=30
group by deptno

答案 1 :(得分:0)

假设您期望ISNT 0的最低值,那么只需将其添加到where子句中

SELECT deptno, count(*), MIN(comm)
FROM emp
WHERE deptno = 30
AND MIN(comm) != 0
GROUP BY deptno