同一查询中的条件SUM和COUNT DISTINCT

时间:2016-06-11 13:34:15

标签: mysql

我有一个非常简单的表,里面装满了大约500k的记录

| ID_1  | ID_2  | Date        | Fields... |
+-------+-------+-------------+-----------+
| 1     | 1     | 1/1/2016    | abc       |
| 2     | 1     | 2/1/2016    | abc       |
| 3     | 2     | 1/2/2016    | abc       |
| 4     | 3     | 1/2/2016    | abc       |
| 5     | 4     | 1/2/2016    | abc       |

我必须根据共同参数从36个值中提取并按日期区分。 为了减少对数据库的访问并提高性能,我做一个子查询,然后将结果与if区分开来。 不同的总和工作完全正常,但我需要计算一些不同的值,这会返回正确的值+1。

SELECT
  SUM( IF(MONTH(Date) = 1, 1, 0) ) AS A1,
  SUM( IF(MONTH(Date) = 2, 1, 0) ) AS A2,
  SUM( IF(MONTH(Date) = 3, 1, 0) ) AS A3,
  ...
  COUNT(DISTINCT( IF(MONTH(Date) = '1', COALESCE(ID_cliente), 0) )) AS C1
FROM (
  SELECT ID_1, ID_2, Date FROM table WHERE Fields = conditions
) AS Sub

如果实际值为0,则C1返回1;如果实际值为1,则返回2

有解决方案,或者我必须将其拆分为两个查询?

0 个答案:

没有答案