sql查询题
pages 表:页面表
表的示例数据:
| page_id | 页面路径 | 页面名称 |
|---|---|---|
| 1 | /home | 首页 |
| 2 | /product/123 | 产品详情页 |
| 3 | /contact | 联系我们页面 |
表字段介绍:
- page_id:页面 ID
- page_path:页面路径
- page_name:页面名称
page_views 表:页面访问记录表
表的示例数据:
| view_id | page_id | 访问日期 | 用户IP | 用户ID |
|---|---|---|---|---|
| 1 | 1 | 2024-07-01 | 192.168.1.1 | 1 |
| 2 | 2 | 2024-07-01 | 192.168.1.2 | 2 |
| 3 | 1 | 2024-07-02 | 192.168.1.1 | 1 |
表字段介绍:
- view_id:访问记录 ID
- page_id:页面 ID
- view_date:访问日期
- user_ip:用户 IP
- user_id:用户 ID
users 表:用户表
表的示例数据:
| user_id | 用户名 | 注册日期 | 性别 | 年龄 |
|---|---|---|---|---|
| 1 | 张三 | 2024-01-01 | 男 | 28 |
| 2 | 李四 | 2024-02-15 | 女 | 24 |
| 3 | 王五 | 2024-03-20 | 男 | 30 |
表字段介绍:
- user_id:用户 ID
- user_name:用户名
- registration_date:注册日期
- gender:性别
- age:年龄
1. 查询访问记录表中所有页面的页面 ID 和访问日期
selectpage_id,view_datafrompage_views;2. 编写 SQL,查询页面表中页面路径为 ‘/home’ 的页面名称
selectpage_namefrompageswherepage_path='/home';3. 查询访问记录表中用户IP为 ‘192.168.1.1’ 的所有记录
select*frompage-viewswhereuser_ip='192.168.1.1';4.查询用户表中性别为 ‘男’ 的所有用户的用户名
selectuser_namefromuserswheregender='男';5. 查询页面表中所有页面的页面 ID,并按页面 ID 升序排序
selectpage_idfrompagesorderbypage_idASC;6.查询访问记录表中每个页面的总访问次数
select page_id, count(*) as total_views from page_views group by page_id;7. 查询用户表中注册日期最早的 3 个用户的用户名和注册日期
select*fromusersorderbyregistration_dateASClimit3;8. 查询访问记录表中每个用户的总访问次数
select user_id count(*) as total_views from page_views group by user_id;9.查询用户表中年龄在 25 岁及以下的所有用户的用户名和年龄
selectuser_name,user_agefromuserswhereuser_age<25;10. 查询用户表中每个性别的用户数量
selectgender,count(*)asuser_countfromusersgroupbygender;11. 查询用户表中年龄在 25 岁及以下且性别为 ‘女’ 的用户的用户名
selectuser_namefromuserswhereuser_age<25andgender='女';12. 查询用户表中注册日期在 2024 年 1 月 1 日之后的用户名和注册日期
selectuser_name,registration_datefromuserswhereregistration_date>'2024-01-01'13. 查询用户表中用户名包含 ‘张’ 字的所有用户
select*fromuserswhereuser_namelike'%张%';14. 查询所有用户中年龄最大的用户信息
select*fromusersorderbyuser_agelimit1;15. 查询用户表中每个性别的平均年龄,并按性别分组
selectgenderavg(user_age)asavg_agefromusersgroupbygender;16. 查询用户表中,注册日期在 2024 年 1 月 1 日和 2024 年 6 月 30 日之间的所有用户
select*fromuserswhereregistration_datebetween'2024-01-01'and'2024-06-30';17. 查询每个页面的第一次访问日期
selectpage_id,min(view_data)asfirst_view_datafrompage_viewsgroupbypage_id;18. 查询访问记录表中,每个页面最近一次访问的日期
selectpage_id,max(view_data)aslast_view_datafrompage_viewsgroupbypage_id;19. 查询访问记录表中每个页面的访问次数,按访问次数从高到低排序
selectpage_id,count(*)astotal_viewsfrompage_viewsgroupbypage_idorderbytotal_viewsDESC;20. 查询每个用户访问的不同页面的总数量(每个用户访问了多少个页面)
select user_id, count(distinct page_id) as total_views from page_views group by user_id21. 查询在 2024 年 7 月 1 日访问过的所有用户的用户名(不能重复)
selectdistinctu.user_namefrompage_viewsaspvinnerjoinusers uonpv.user_id=u.user_idwherepv.view_data='2024-07-01';22. 查询所有页面中访问次数最多的页面的页面名称(子查询)
selectp.page_namefrompages pjoin(selectpage_id,count(*)astotal_viewfrompage_viewsorderbytotal_viewdescgroupbypage_idlimit1)pvonp.page_id=pv.page_id23. 查询在 2024 年 7 月 1 日访问次数最多的页面的页面路径
selectp.page_pathfrompages pjoin(selectpage_id,count(*)asview_countfrompage_viewswhereview_data='2024-07-01'groupbypage_idorderbyview_countDESClimit1;)pvonp.page_id=pv.page_id24.查询每个用户最近一次访问的页面路径及访问日期
selectu.user_name,p.page_path,pv.view_datafromusers ujoinpage_views pvonu.user_id=pv.user_idjoinpages ponpv.page_id=p.page_idwhere(pv.user_id,pv.view_data)in(selectuser_id,max(view_data)frompage_viewsgroupbyuser_id)