牛客题霸sql入门篇之必会的常用函数(一)

牛客题霸sql入门篇之必会的常用函数(一)

1 条件函数

1.1 计算25岁以上和以下的用户数量

1.1.1 题目内容

在这里插入图片描述

1.1.2 示例代码
SELECT case  when age<25 OR age is null then '25岁以下'
             when age>=25 then '25岁及以上'
             end age_cut,count(*) number
FROM user_profile
GROUP BY age_cut
1.1.3 运行结果

在这里插入图片描述

1.1.4 考察知识点
case进行逻辑判断的语法如下(相当于java中的if..else..if)
case when 条件1  then 返回值1
case when 条件2  then 返回值2
......
case when 条件n  then 返回值n
end 自定义列名
注意 这个语法的书写的位置需在select子句中

1.2 查看不同年龄段的用户明细

1.2.1 题目内容
a 内容1

在这里插入图片描述

b 内容2

在这里插入图片描述

1.2.2 示例代码
-- 用case会好一点,用if函数会写的很长
SELECT device_id,gender,
   case when age is null then '其他'
        when age<20  then '20岁一下'
        when age between 20 and 24 then '20-24岁'
        when age>=25 then '25岁及以上'
        -- end 后面接上列的别名
        end age_cut
FROM user_profile
1.2.3 运行结果

在这里插入图片描述

1.2.4 考察知识点
同1.1.4

2 日期函数

2.1 计算用户8月每天的练题数量

2.1.1 题目内容
a 内容1

在这里插入图片描述

b 内容2

在这里插入图片描述

2.1.2 示例代码
SELECT date_format(date,'%d') day,count(*) question_cnt
FROM question_practice_detail
GROUP BY date
HAVING date_format(date,"%m")=8;
2.1.3 运行结果

在这里插入图片描述

2.1.4 考察知识点
date_format(date类型的值,'转换后的格式')
-- 其中%Y代表年,%m代表月,%d代表日期

2.2 计算用户平均次日留存率

2.2.1 题目内容

在这里插入图片描述

2.2.2 示例代码
-- 做题的时候需要先看清楚数据嘞
SELECT count(r.date)/count(q.date)
FROM (SELECT distinct device_id,date FROM question_practice_detail) q
LEFT JOIN (SELECT distinct device_id,date FROM question_practice_detail) r
ON datediff(r.date,q.date)=1 AND q.device_id=r.device_id
2.2.3 运行结果

在这里插入图片描述

2.2.4 考察知识点
1.如果已知的重复数据对后面的筛选有影响的话,可以考虑一开始就筛选掉
2.count等聚合函数,会把null值的列除外,但是count(*)除外
3 对于重复的列可以使用distinct关键字去掉
4 关键点在于求出第一天、第二天用户均在的数据条数、用户第一天总天数
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSS4362

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值