基于条件的列数

Column count based on a condition

我创建了一个如下所示的 oracle 查询,查询运行良好 但问题是我还想要一列,这是名称的计数,其中类别应该是 A 并且 id 应该是 1

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

谁能告诉我一些解决方案

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

像这样:

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
SELECT name, velocity, COUNT(*) AS count, 
COUNT(CASE WHEN category = 'A' AND id = 1 THEN 1 END)
FROM section 
GROUP BY name, velocity

这应该有效。

如果记录不满足条件那么它将return一个NULL,并且计数跳过NULL字段。