mysql count 各种情况 case when
时间: 2023-07-07 19:34:06 浏览: 120
MySQL中的COUNT函数可以用于计算表中符合特定条件的行数。而对于特定条件,可以使用CASE WHEN语句进行判断。
以下是一些示例:
1. 计算表中所有行的数量:
```
SELECT COUNT(*) FROM table_name;
```
2. 计算表中某个字段值为非空值的行数:
```
SELECT COUNT(column_name) FROM table_name;
```
3. 计算表中满足某个条件的行数:
```
SELECT COUNT(*) FROM table_name WHERE condition;
```
4. 根据不同条件计算不同行数,使用CASE WHEN语句:
```
SELECT COUNT(CASE WHEN condition1 THEN 1 ELSE NULL END) AS count1,
COUNT(CASE WHEN condition2 THEN 1 ELSE NULL END) AS count2,
COUNT(CASE WHEN condition3 THEN 1 ELSE NULL END) AS count3
FROM table_name;
```
在这个例子中,当条件1成立时,计数器count1加1,其他计数器不变。当条件2成立时,计数器count2加1,其他计数器不变。当条件3成立时,计数器count3加1,其他计数器不变。最后返回三个计数器的值。
相关问题
mysql count case when
可以使用以下语句进行 mysql count case when 操作:
```
SELECT COUNT(CASE WHEN condition THEN 1 ELSE NULL END) FROM table_name;
```
其中 condition 是自定义条件,table_name 是表名。
mysql case when count
根据引用和引用的内容,MySQL的CASE WHEN语句可以用于根据条件来统计数据。具体地说,在数据库中,可以使用CASE WHEN来对某个条件进行判断,并根据条件的成立与否返回相应的字段信息。引用提供了一个示例,展示了如何使用CASE WHEN统计刷脸签到总数、系统代签总数以及每天的总签到数。
例如,在上课记录表中,可以使用以下SQL语句来实现这个统计:
SELECT create_time, COUNT(1) total_count, -- 上课总签到数
SUM(CASE WHEN sign_type = 2 THEN 1 ELSE 0 END) face_count, -- 刷脸签到数
SUM(CASE WHEN sign_type = 1 THEN 1 ELSE 0 END) work_count -- 系统代签总数
FROM course_record
WHERE create_time >= '2022-08-24'
GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d')
这个SQL语句会根据create_time字段进行分组,并统计每天的上课总签到数、刷脸签到数以及系统代签总数。其中,CASE WHEN语句根据sign_type字段的值进行判断,当sign_type等于2时,表示刷脸签到,将对应的记录计入刷脸签到数(face_count);当sign_type等于1时,表示系统代签,将对应的记录计入系统代签总数(work_count)。总签到数(total_count)则是所有签到记录的数量。
这样,可以通过执行以上SQL语句来得到所需的统计结果。
阅读全文