2015-05-20 31 views
0

我的表像这样在SQL中具有相同计数的秒钟分钟值?

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概念

+0

配合您的查询的字段名示例数据字段名 – Matt

+0

所以,你要寻找的第二个最低值?如果deptno只有一个值或没有值,应该返回什么? –

+0

这么多部门不是。 –

回答

0

假设你期待的最低原位缺口0然后只需添加到where子句

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

获取错误只 –

+0

你得到什么错误>第二低,? – Matt

+0

@马特 - 你只需要'COMM = 0',不'MIN(COMM)';!你不能在where子句中使用组函数。不确定是否会打破“使用b> 0概念”作为编辑添加restirction。 –

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 
+0

工作很好,谢谢 –

+0

对不起,您的查询返回300.but我需要200个 –

+1

@Vinoth_S - 它得到200与你有样本数据,如果所有这些都是在百货30 –