假設我想要計算W,X,Y和Z中元素的數量。我不關心WXY內的具體數字,關心Z.有沒有辦法可以讓這樣的事情:SQL如何使用計數和分組WXY和Z
column | count
---------------
WXY | 10
Z | 5
代替
column | count
---------------
W | 2
X | 3
Y | 5
Z | 5
假設我想要計算W,X,Y和Z中元素的數量。我不關心WXY內的具體數字,關心Z.有沒有辦法可以讓這樣的事情:SQL如何使用計數和分組WXY和Z
column | count
---------------
WXY | 10
Z | 5
代替
column | count
---------------
W | 2
X | 3
Y | 5
Z | 5
SELECT [column] = CASE
WHEN [column] IN ('W','X','Y') THEN 'WXY' ELSE 'Z' END,
[count] = COUNT(*)
FROM dbo.[table]
WHERE [column] IN ('W','X','Y','Z')
GROUP BY CASE
WHEN [column] IN ('W','X','Y') THEN 'WXY' ELSE 'Z' END
ORDER BY [column];
select case
when c in ('W', 'X', 'Y') then 'XYZ'
else 'Z' end as c,
count(*)
from t
group by 1
這將適用於PostGreSQL,但不適用於SQL Server。這個問題被標記爲兩個,所以目前還不清楚OP需要什麼。 –
您可以使用公用表表達式(CTE)輕鬆完成此操作,並在嘗試獲取記錄計數之前彙總數據。
它適用於PostgreSQL和SQL Server(但如果您命名列「列」則會出現問題)。
的PostgreSQL:SQL Fiddle SQL服務器:SQL Fiddle
;with aggData as
(
select case
when c = 'Z' then 'Z'
else 'WXY'
end as col
from t
)
select col, count(*)
from aggData
group by col
請使用Ctrl + K,而不是一堆用於代碼格式化的' '和'
'標籤。 –
這被標記爲sql-server和postgresql。你正在使用哪個數據庫版本?如果您需要針對兩者的解決方案,那麼您是否需要相同的查詢才能在兩個版本上工作,或者爲每個版本工作單獨查詢? –