当前位置: 代码网 > it编程>数据库>Mysql > MySQL 聚合函数、分组查询、时间函数详解

MySQL 聚合函数、分组查询、时间函数详解

2024年08月01日 Mysql 我要评论
一、题目:每位教师所教授的科目种类的数量本题主要考验聚合函数count()求和以及分组查询。1 准备工作create table if not exists teacher (teacher_id i

一、题目:每位教师所教授的科目种类的数量

本题主要考验聚合函数count()求和以及分组查询。

1 准备工作

create table if not exists teacher (teacher_id int, subject_id int, dept_id int);
truncate table teacher;
insert into teacher (teacher_id, subject_id, dept_id) values ('1', '2', '3');
insert into teacher (teacher_id, subject_id, dept_id) values ('1', '2', '4');
insert into teacher (teacher_id, subject_id, dept_id) values ('1', '3', '3');
insert into teacher (teacher_id, subject_id, dept_id) values ('2', '1', '1');
insert into teacher (teacher_id, subject_id, dept_id) values ('2', '2', '1');
insert into teacher (teacher_id, subject_id, dept_id) values ('2', '3', '1');
insert into teacher (teacher_id, subject_id, dept_id) values ('2', '4', '1');

查询每位老师在大学里教授的科目种类的数量;

示例 1:

输入:

teacher 表:

输出: 

2 分析

3 实现 

select
    activity_date day,
    count(distinct user_id) active_users
from activity
where datediff('2019-07-27',activity_date) between 0 and 29
group by activity_date;

二 、查询近30天活跃用户数

本题主要考验

  • 分组查询

  • 字符串函数count统计人数

  • 时间函数定义时间

1 准备工作

create table if not exists activity (user_id int, session_id int, activity_date date, activity_type enum('open_session', 'end_session', 'scroll_down', 'send_message'));
truncate table activity;
insert into activity (user_id, session_id, activity_date, activity_type) values ('1', '1', '2019-07-20', 'open_session');
insert into activity (user_id, session_id, activity_date, activity_type) values ('1', '1', '2019-07-20', 'scroll_down');
insert into activity (user_id, session_id, activity_date, activity_type) values ('1', '1', '2019-07-20', 'end_session');
insert into activity (user_id, session_id, activity_date, activity_type) values ('2', '4', '2019-07-20', 'open_session');
insert into activity (user_id, session_id, activity_date, activity_type) values ('2', '4', '2019-07-21', 'send_message');
insert into activity (user_id, session_id, activity_date, activity_type) values ('2', '4', '2019-07-21', 'end_session');
insert into activity (user_id, session_id, activity_date, activity_type) values ('3', '2', '2019-07-21', 'open_session');
insert into activity (user_id, session_id, activity_date, activity_type) values ('3', '2', '2019-07-21', 'send_message');
insert into activity (user_id, session_id, activity_date, activity_type) values ('3', '2', '2019-07-21', 'end_session');
insert into activity (user_id, session_id, activity_date, activity_type) values ('4', '3', '2019-06-25', 'open_session');
insert into activity (user_id, session_id, activity_date, activity_type) values ('4', '3', '2019-06-25', 'end_session');

统计截至 2019-07-27(包含07-27),近30天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)

示例 2 :

输入:

输出:

2 分析 

首先需要查询的字段为时间和用户登录数,对时间分组并且对用户人数统计查询出每日活跃的用户。(含重复id)

对用户的id进行去重查出每日活跃用户

3 实现 

select
    activity_date day,
    count(distinct user_id) active_users
from activity
where datediff('2019-07-27',activity_date) between 0 and 29
group by activity_date;

到此这篇关于mysql 聚合函数、分组查询、时间函数 的文章就介绍到这了,更多相关mysql聚合函数、分组查询、时间函数 内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com