我需要以下记录的计数:
I am currently using the below query to find the count: SELECT SUM( CASE WHEN tbl.`t11` = 0 THEN 1 ELSE 0 END) T11Count, SUM( CASE WHEN tbl.`t12` = 0 THEN 1 ELSE 0 END) T12Count, SUM( CASE WHEN tbl.`t13` = 0 THEN 1 ELSE 0 END) T13Count, SUM( CASE WHEN (tbl.`t11` = 1 AND tbl.`t12`=1 AND tbl.`t13`=1 AND tbl2.`t22`='0') THEN 1 ELSE 0 END) T1232Count, SUM( CASE WHEN tbl2.`t22` = '1' THEN 1 ELSE 0 END) T22Count FROM `Table1` AS tbl JOIN JOIN `Table2` AS tbl2 ON tbl.`ID1` = tbl2.`ID2`
但是, -尽管表2中相对于表1中的记录有多少条记录,我只需要将其计数为单条记录
样本数据和所需的输出:
Table1 ----------------------------------- ID1(PK) t11 t12 t13 t14 1 1 1 1 a 2 0 1 1 b 4 1 1 1 c 5 1 1 1 d 6 0 1 1 e 7 1 0 1 f 9 1 0 1 g 10 1 1 1 h 11 1 0 1 i 13 1 1 0 j 14 1 1 1 k Table2 ----------------------------------- ID2(PK) t22 t123 ID1 1 0 z 1 2 0 y 2 3 0 x 4 4 1 w 4 5 0 v 5 6 0 u 6 7 0 t 7 8 0 s 7 9 0 r 9 10 0 q 1 11 0 p 2 12 0 o 10 13 0 n 11 14 0 m 11 15 0 l 13 16 0 l 14 Expected Output: ----------------------------------- T11Count T12Count T13Count T1232Count T22Count 2 3 1 4 1
答案 0 :(得分:0)
对我有用的查询:
SELECT SUM( CASE WHEN tbl.`t11` = 0 THEN 1 ELSE 0 END) T11Count, SUM( CASE WHEN tbl.`t12` = 0 THEN 1 ELSE 0 END) T12Count, SUM( CASE WHEN tbl.`t13` = 0 THEN 1 ELSE 0 END) T13Count, SUM( CASE WHEN (tbl.`t11` = 1 AND tbl.`t12`=1 AND tbl.`t13`=1 AND tbl2.`t22`='0') THEN 1 ELSE 0 END) T1232Count, SUM( CASE WHEN tbl2.`t22` = '1' THEN 1 ELSE 0 END) T22Count FROM `Table1` AS tbl JOIN ( SELECT ID2, t22 FROM `Table2` GROUP BY t22) tbl2 ON tbl.`ID1` = tbl2.`ID2`