【力扣刷题日记】1294.不同国家的天气类型

前言

练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。

今日题目:

1294.不同国家的天气类型
表:Countries

列名类型
country_idint
country_namevarchar

country_id 是这张表的主键(具有唯一值的列)。
该表的每行有 country_id 和 country_name 两列。

列名类型
country_idint
weather_statevarchar
daydate

(country_id, day) 是该表的复合主键(具有唯一值的列)。
该表的每一行记录了某个国家某一天的天气情况。

编写解决方案找到表中每个国家在 2019 年 11 月的天气类型。

天气类型的定义如下:
当 weather_state 的平均值小于或等于 15 返回 Cold,
当 weather_state 的平均值大于或等于 25 返回 Hot,
否则返回 Warm。
以 任意顺序 返回你的查询结果。


  • 首先梳理表内容,题干一共给了两张表,一张国家表,记录了国家id,国家名,一张天气表,记录了国家id,天气状态,以及日期。
  • 其次分析需求,需要找到每个国家在2019年11月的天气类型当 weather_state 的平均值小于或等于 15 返回 Cold,当 weather_state 的平均值大于或等于 25 返回 Hot,否则返回 Warm。
  • 那么首先肯定要筛选所有2019年11月的日期
  • 然后将两张表连接起来,将天气表作为主表
  • 最后对国家id进行分组,对其天气状态求平均值,通过case when逻辑判断得到最终结果
select country_name,
case 
    when avg(weather_state) <= 15 then "Cold"
    when avg(weather_state) >= 25 then "Hot"
    else "Warm" 
end as weather_type
from Weather w  
left join Countries c 
on w.country_id = c.country_id
where substr(day,1,7) = "2019-11"
group by w.country_id

结果:

在这里插入图片描述


总结:

能运行就行。


  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值