2015-10-16 117 views
2

我创建了一个oracle查询,如下所示,查询工作正常 ,但问题是,我想要一个更多的列,这是名称的计数,其中类别应该是A和ID应该在1根据条件的列数

SELECT name, velocity, COUNT(*) AS count, category FROM section GROUP BY name, velocity 

enter image description here

谁能告诉我,这

+0

[Conditional Count on a field]可能重复(http://stackoverflow.com/questions/1288058/conditional-count-on-a-field) – C8H10N4O2

回答

8
SELECT name, velocity, COUNT(*) AS count, 
COUNT(CASE WHEN category = 'A' AND id = 1 THEN 1 END) 
FROM section 
GROUP BY name, velocity 

这应该工作。

如果记录不符合条件,那么它将返回一个NULL,并且count跳过NULL字段。

1
SELECT name, velocity, COUNT(*) AS count, category, 
     (select count(distinct name) from section where category = 'A' and id = 1) 
FROM section 
GROUP BY name, velocity 
2

事情是这样的一些解决方案:

SELECT name, velocity, COUNT(*) AS count, 
SUM(CASE WHEN category = 'A' AND id = 1 THEN 1 ELSE 0 END) 
FROM section 
GROUP BY name, velocity 
+0

您忘记了ID条件 – Mihai

+0

@Mihai谢谢!固定 – Tatiana