由于CONCAT,功能不正确

时间:2013-05-16 03:46:53

标签: mysql

我正在使用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个项目符合crit1crit2条件,并且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

1 个答案:

答案 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)