23-29题排序和分组- 高频 SQL 50 题基础版

1. 相关知识点

  • where 和having的区别
    • where 是分组之前筛选数据
    • having 是分组之后筛选数据
  • 相关函数
函数含义
group by分组
distinct去重
date_sub(‘2019-07-27’, interval 30 day)日期相减
date_add(‘2019-07-27’, interval 30 day)日期相加
datediff(‘2019-07-27’,activity_date)<30日期相差范围

2. 例子

2.23 - 每位教师所教授的科目种类的数量

  • 考点: 排序和分组
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
select
    teacher_id,count(distinct subject_id) cnt 
from
    Teacher 
group by
    teacher_id;

2.24 - 查询近30天活跃用户数

  • 排序和分组
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
-- 日期相减 date_sub('2019-07-27', interval 30 day)获取新的日期
-- 日期范围 datediff('2019-07-27',activity_date)<30

-- where activity_date > date_sub('2019-07-27', interval 30 day)
-- and activity_date <= '2019-07-27'=where datediff('2019-07-27',activity_date)<30

select
    activity_date day,count(distinct user_id) active_users 
from
    Activity 
where 
    datediff('2019-07-27',activity_date)<30

GROUP BY 
    activity_date;

2.25 - 销售分析III

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


select
    p.product_id,p.product_name 
from
    Sales s left join Product  p on s.product_id=p.product_id 
group by
    product_id
having
    min(sale_date) >="2019-01-01" and max(sale_date)<="2019-03-31";

2.26 - 超过5名学生的课

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

select 
    class
from
    Courses 
group by
    class    
having
    count(*)>=5;

2.27 - 求关注者的数量

在这里插入图片描述
在这里插入图片描述

select
    user_id,count(*) followers_count
from
    Followers 
group by
    user_id;

2.28 - 只出现一次的最大数字

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

select 
    (select
        num
    from
        MyNumbers 
    group by
        num 
    having
        count(num)=1
    order by 
        num 
    desc limit 
        1) 
as 
    num;

2.29 - 买下所有产品的客户

在这里插入图片描述
在这里插入图片描述

select
    c.customer_id 
from
    Customer c 
group by
    c.customer_id 
having
    count(c.product_key)=(select count(distinct product_key) from Product);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荼靡~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值