SQL使用单独的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_

我试图使用不同的“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_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)

谢谢你的帮助。