力扣SQL刷题7
创始人
2024-05-24 10:22:07
0

1132. 报告的记录 II

题型:表1,对列A分组,在列B满足某种条件下,(出现在表2中的列C值个数)/(列C个数)的比例, 对A分组各类别中取均值
解答1:
select 列A,count(distinct 表1.列C)/count(distinct 表2.列C)
from 表1 left join 表2 using(列C)
where 列B条件
group by 列A
外面再嵌套一下,求均值

解答2:分子,分母分别求一下,再连接起来
select avg(ifnull(b.r2,0)/a.r1)
from (select 列A,count(distinct 列C) as r1 from 表1 where 列B条件 group by 列A) a
left join
(select 列A,count(distinct 列C) as r2 from 表1 where 列B条件 and 列C in (select 列C from 表2) group by 列A) b
on a.列A = b.列A

这题目越看越别扭
在这里插入图片描述
在这里插入图片描述
解法1:

SELECT round(avg(p)*100,2) average_daily_percent
from 
(
SELECT a.action_date,count(distinct r.post_id)/count(distinct a.post_id) as p
from Actions a left join Removals r on a.post_id=r.post_id
where a.extra='spam'
group by a.action_date
) a

解法2:

SELECT ROUND(AVG(IFNULL(remove.cnt, 0)/total.cnt) * 100, 2) AS average_daily_percent
FROM (SELECT action_date, COUNT(DISTINCT post_id) AS cntFROM actionsWHERE extra = 'spam'GROUP BY action_date
) total
LEFT JOIN (SELECT action_date, COUNT(DISTINCT post_id) AS cntFROM actionsWHERE extra = 'spam' AND post_id IN (SELECT post_id FROM Removals)GROUP BY action_date
) remove 
ON total.action_date = remove.action_date

1164. 指定日期的产品价格

题型:看题
解答:分两种情况,1、默认为10的,2、有更新的,union连接起来
1、最小的更新时间都大于2019-08-16,直接设定为10
2、找到id 对应的最大更新时间,输出最新价格

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

(select product_id,10 as price
from Products 
group by product_id
having min(change_date)>'2019-08-16')
union
(select product_id,new_price as price 
from Products 
where (product_id,change_date) in(select product_id,max(change_date) as max_datefrom Products where change_Date<='2019-08-16'group by product_id))

1193. 每月交易 I

知识点:
满足某条件的计数—sum(条件)
满足某条件的金额—sum(if(条件,列A值,0))
日期截取年月----date_format(日期,‘%Y-%m’)或者 left(日期,7)

在这里插入图片描述

select date_format(trans_date,'%Y-%m')  AS month,
country,
count(1) as trans_count,
sum( state = 'approved') as  approved_count,
sum(amount) as trans_total_amount,
sum(if(state='approved',amount,0)) as approved_total_amount 
from Transactions
group by date_format(trans_date,'%Y-%m'),country

1204. 最后一个能进入电梯的人–重要

题型:见题目
解答:窗口函数呀,将weight列逐步累计和

在这里插入图片描述

select person_name
from
(select *,sum(weight)over(order by turn) as ts
from Queue) a
where ts<=1000
order by turn desc
limit 1

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...