SELECT student_id,count(status) FROM dwd_ms_student_attendance_info where status = 100 group by student_id分组相加
时间: 2023-08-16 10:06:27 浏览: 91
这是一条 SQL 查询语句,它的作用是从表 dwd_ms_student_attendance_info 中选择学生ID和状态值为100的出勤记录数量,并按照学生ID分组相加。
具体的 SQL 语句如下所示:
```
SELECT student_id, COUNT(status)
FROM dwd_ms_student_attendance_info
WHERE status = 100
GROUP BY student_id;
```
这条语句会返回一个表格,其中包含两列:学生ID和状态值为100的出勤记录数量。每个学生ID对应一个计数值,表示该学生出勤状态为100的记录数量。通过 GROUP BY 子句将结果按学生ID进行分组,并使用 COUNT 聚合函数计算每个分组中状态值为100的记录数量。
相关问题
select count(distinct offer_name),month_id from (select count(distinct offer_name), month_id from dwd_sum_zhuliuxxsc where month_id =to_char(month_id+1,yyyymm) group by month_id)语法修正一下
你的 SQL 查询语句已经很接近正确的语法了,只需要将子查询的结果作为一个临时表,再在外层查询中进行聚合即可。可以使用以下语句:
```
SELECT COUNT(DISTINCT offer_name), month_id
FROM (
SELECT COUNT(DISTINCT offer_name), month_id
FROM dwd_sum_zhuliuxxsc
WHERE month_id = TO_CHAR(month_id+1, 'yyyymm')
GROUP BY month_id
) tmp
GROUP BY month_id;
```
这样就可以得到按月份统计的不同 offer_name 数量了。希望对你有所帮助。
将这句话中的t_table as( SELECT id,create_date FROM dwd_fact_cms_info ) 使用正则匹配出来
正则表达式:`t_table\s+as\s*\(\s*SELECT\s+id\s*,\s*create_date\s*FROM\s+dwd_fact_cms_info\s*\)`
解释:
- `t_table`:匹配 t_table 字符串。
- `\s+`:匹配一个或多个空白字符,包括空格、制表符、换行符等。
- `as`:匹配 as 字符串。
- `\s*`:匹配零个或多个空白字符。
- `\(\s*SELECT\s+id\s*,\s*create_date\s*FROM\s+dwd_fact_cms_info\s*\)`:匹配包含 id 和 create_date 列的从 dwd_fact_cms_info 表中选择的子查询,并且子查询使用圆括号括起来。
注意:在使用正则表达式时,需要考虑目标字符串中可能存在的空白字符、大小写等问题。
阅读全文