SQL使用单独的where值多次选择总和计数
我试图使用不同的“where”值将同一列的计数拉三次。 比如说SQL使用单独的where值多次选择总和计数,sql,Sql,我试图使用不同的“where”值将同一列的计数拉三次。 比如说 SELECT (sum(count(phonenum) FROM table1 WHERE uniqueID IN ( 123, 43, 124, 44, 112)) AS blabla_LTD) ,(sum(count(phonenum) FROM table1 WHERE uniqueID IN (163, 53, 114, 45, 222)) AS lablab_LTD) 期望 Blabla_LTD LABLAB_
SELECT (sum(count(phonenum) FROM table1 WHERE uniqueID IN ( 123, 43, 124, 44, 112)) AS blabla_LTD)
,(sum(count(phonenum) FROM table1 WHERE uniqueID IN (163, 53, 114, 45, 222)) AS lablab_LTD)
期望
Blabla_LTD LABLAB_LTD
1234 11234
谢谢您的帮助。我想这会对您有所帮助:
SELECT
SUM(CASE WHEN uniqueID IN ( 123, 43, 124, 44, 112) AND phoneNum IS NOT NULL THEN 1 ELSE 0 END)
, SUM(CASE WHEN uniqueID IN (163, 53, 114, 45, 222) AND phoneNum IS NOT NULL THEN 1 ELSE 0 END)
FROM table1
您可以使用子查询,但我认为条件聚合可能更有效:
select sum(case when uniqueID IN ( 123, 43, 124, 44, 112)
then 1 else 0
end) AS blabla_LTD,
sum(case when uniqueID IN (163, 53, 114, 45, 222)
then 1 else 0
end) AS lablab_LTD
from table1
where phonenum is not null;
如果您在uniqueId
上有索引,那么在where
子句中包含所有id
,也可能有助于提高性能:
where uniqueId in (123, 43, 124, 44, 112, 163, 53, 114, 45, 222)
谢谢你的帮助。