SQL练习(1)-牛客1-39

文章介绍了如何使用SQL计算用户平均次日留存率,统计特定用户群体的活动情况,以及分析不同难度题目的正确率。同时,强调了在使用聚合函数时HAVING子句的重要性,以及处理字符串和分组查询的技巧,如substring_index函数和窗口函数的应用,还提到了LIMIT在MySQL中限制查询结果行数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 SQL29 计算用户的平均次日留存率

在这里插入图片描述

二、SQL34 统计复旦用户8月练题情况

在这里插入图片描述

三、SQL35 浙大不同难度题目的正确率

在这里插入图片描述

四、tips

1、聚合函数结果作为筛选条件时,不能用where,而是用having语法,配合重命名即可
2、查询结果去重:DISTINCT()
3、组合查询 union all 去重 union不去重
SQL 25 查找山东大学或男性
在这里插入图片描述
4、COUNT(*) 函数返回表中的记录数
5、where放group by前面,having 放group by 后面
6、SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。
7、按字符分割后取出,可使用substring_index函数可以按特定字符串截取源字符串。
substring_index(FIELD, sep, n)可以将字段FIELD按照sep分隔:
(1).当n大于0时取第n个分隔符(n从1开始)之后的全部内容;
(2).当n小于0时取倒数第n个分隔符(n从-1开始)之前的全部内容;
eg:
substring_index(substring_index(profile, ‘,’, 3), ‘,’, -1) as age
SQL32 截取年龄
在这里插入图片描述
8、order by 【排序升序asc 降序desc】
eg、SQL33 找出每个学校GPA最低的同学
利用相关子查询,把每个学校的最低gpa当作查询条件,去找出每个学校的gpa最低的同学。因为每个学校只有一个gpa最低的同学,所以最后出来的结果不需要再用group by,用order by排序就好
在这里插入图片描述
或使用窗口函数

<窗口函数> over (partition by <用于分组的列名>
order by <用于排序的列名>)
<窗口函数>的位置,可以放以下两种函数:
1、专用窗口函数,比如rank, dense_rank, row_number等 rank 如果有并列名次的行,会占用下一名次的位置 1 1 3
2、dense_rank 如果有并列名次的行,不占用下一名次的位置 1 1 2 row_number 如果有并列名次的行,也不考虑并列名次的情况
3、聚合函数,如sum. avg, count, max, min等 针对自身记录、以及自身记录之上的所有数据进行计算
在这里插入图片描述

9、返回限制行数,mysql:limit区别于sql server:top
my sql:

select * from tablename limit m, n

sql server

select top 5 id from table 

eg、SQL4 查询结果限制返回行数

10、过滤空值:is Not Null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值