select date(create_time) as date1, SUM(case state = 3 and when 1 then 0) as count1, count(ask_id) as count2 from asks where create_time > '2023-05-10 00:00:00' and create_time < '2023-06-06 00:00:00' GROUP BY date(create_time);
时间: 2024-03-05 20:52:59 浏览: 55
在这个 SQL 查询语句中,你使用了 `SUM(CASE)` 函数和 `COUNT` 函数来进行聚合计算。具体来说,`SUM(CASE)` 用于根据指定条件进行累加计算,而 `COUNT` 用于统计符合条件的行数。
下面是对你的查询语句中的每个部分进行解释:
```
SELECT
DATE(create_time) AS date1, -- 按日期分组,使用 DATE() 函数提取日期部分
SUM(CASE state = 3 AND WHEN 1 THEN 0 END) AS count1, -- 按条件累加计算
COUNT(ask_id) AS count2 -- 统计行数
FROM
asks
WHERE
create_time > '2023-05-10 00:00:00' AND create_time < '2023-06-06 00:00:00' -- 按时间范围筛选
GROUP BY
DATE(create_time); -- 按日期分组
```
在这个查询中,首先使用了 `DATE(create_time)` 函数将 `create_time` 字段中的日期部分提取出来,并将其命名为 `date1`。然后使用 `SUM(CASE)` 函数计算了符合条件 `state = 3 AND WHEN 1` 的行数(其实这个条件是有问题的,因为 `WHEN` 后面缺少一个表达式或值,但是这个问题不影响我们对 `SUM(CASE)` 的理解)。最后使用 `COUNT` 函数统计了符合时间范围筛选条件的行数,并将其命名为 `count2`。
最后使用 `GROUP BY` 子句将结果按照日期分组,并得到每个日期对应的聚合计算结果。
阅读全文