基于条件的列数
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字段。
我创建了一个如下所示的 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字段。