我正在使用SUM()
以下列方式计算具有多个条件的行
SELECT date(time),
SUM(CASE WHEN crit1 = 1 AND crit2 NOT LIKE CONCAT('%',table1.id,'%') THEN 1 ELSE 0 END)
FROM table1, table2
GROUP BY date(time)
然而,我注意到,被计算的项目数是table1
中的多个项目。因此,如果有100个项目符合crit1
和crit2
条件,并且table1
中有5个项目,则会为我提供500个项目。
我在table1中添加和删除了项目,并按比例影响了SUM子句,以验证这一点。
如果不对CONCAT中的每个案例进行重复计算,或者可能是一种更好的统计方法,它如何求和?
数据结构:
table1 table2
id name time crit1 crit2
123 A 2013-05-15 05:00:00 1 456
234 B 2013-05-15 05:00:00 2 789
345 C 2013-05-15 05:00:00 1 678
注意:ID是唯一的
期望的输出:
2013-05-15 2
答案 0 :(得分:1)
我相信你想要这个:
SELECT date(time), COUNT(crit2)
FROM table2
WHERE
table2.crit1 = 1
AND
table2.crit2 NOT IN (SELECT id FROM table1)
GROUP BY date(time)