sql做题记录(三)

本文记录了在LeetCode上的SQL题目,涵盖每日用户统计、活跃业务查询、用户购买平台分析等多个方面,详细解析了解题思路、错误陷阱及注意事项。涉及到的关键技术包括时间判断、事件频率统计、多平台用户行为分析、数据清洗等。

题目来自leetcode
记录题型,做题方法,错误原因和注意事项
如有问题 请及时纠正

1.每日用户统计
编写一个 SQL 查询,以查询从今天起最多 90 天内,每个日期该日期首次登录的用户数。假设今天是 2019-06-30.

select a.login_date,count(a.user_id) as 'user_count' 
from
(select distinct t.user_id,min(t.activity_date) as 'login_date' 
from Traffic t
where t.activity='login'
group by t.user_id
) a
where datediff("2019-06-30",a.login_date) <= 90
group by 1
九十天内用datediff("2019-06-30",a.login_date) <= 90    #注意datediff()日期要用双引号

90天前是4.1不是3.30
时间判断条件要在a表的基础上 不然会选中90天前第一次登陆 之后重复 登陆的用户 不要忘记登陆条件是login
2.查询活跃业务
如果一个业务的某个事件类型的发生次数大于此事件类型在所有业务中的平均发生次数,并且该业务至少有两个这样的事件类型,那么该业务就可被看做是活跃业务。

select distinct business_id  from events e left join
(select distinct event_type,avg(occurences) as 'occurences' from events
group by event_type) a
on e.event_type=a.event_type
where e.occurences>a.occurences
group by business_id
having count(*)>1

选择至少有两个type用group having count… 最好不再select一次
3.用户购买平台
写一段 SQL 来查找每天 仅 使用手机端用户、仅 使用桌面端用户和 同时 使用桌面端和手机端的用户人数和总支出金额。
在这里插入图片描述

select a.spend_date,a.platform,ifnull(sum(amount
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值