【LC简单】1294. 不同国家的天气类型
❤️博客主页: 楚生辉
❤️系列专栏:【LeetCode刷题】
❤️一句短话: 坚持不懈,孜孜不倦
1.题目描述
国家表:Countries
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| country_id | int |
| country_name | varchar |
+---------------+---------+
country_id 是这张表的主键。
该表的每行有 country_id 和 country_name 两列。
天气表:Weather
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| country_id | int |
| weather_state | varchar |
| day | date |
+---------------+---------+
(country_id, day) 是该表的复合主键。
该表的每一行记录了某个国家某一天的天气情况。
写一段 SQL 来找到表中每个国家在 2019 年 11 月的天气类型。
天气类型的定义如下:当 weather_state 的平均值小于或等于15返回 Cold,当 weather_state 的平均值大于或等于 25 返回 Hot,否则返回 Warm。你可以以任意顺序返回你的查询结果。
查询结果格式如下所示:
Countries table:
+------------+--------------+
| country_id | country_name |
+------------+--------------+
| 2 | USA |
| 3 | Australia |
| 7 | Peru |
| 5 | China |
| 8 | Morocco |
| 9 | Spain |
+------------+--------------+
Weather table:
+------------+---------------+------------+
| country_id | weather_state | day |
+------------+---------------+------------+
| 2 | 15 | 2019-11-01 |
| 2 | 12 | 2019-10-28 |
| 2 | 12 | 2019-10-27 |
| 3 | -2 | 2019-11-10 |
| 3 | 0 | 2019-11-11 |
| 3 | 3 | 2019-11-12 |
| 5 | 16 | 2019-11-07 |
| 5 | 18 | 2019-11-09 |
| 5 | 21 | 2019-11-23 |
| 7 | 25 | 2019-11-28 |
| 7 | 22 | 2019-12-01 |
| 7 | 20 | 2019-12-02 |
| 8 | 25 | 2019-11-05 |
| 8 | 27 | 2019-11-15 |
| 8 | 31 | 2019-11-25 |
| 9 | 7 | 2019-10-23 |
| 9 | 3 | 2019-12-23 |
+------------+---------------+------------+
Result table:
+--------------+--------------+
| country_name | weather_type |
+--------------+--------------+
| USA | Cold |
| Austraila | Cold |
| Peru | Hot |
| China | Warm |
| Morocco | Hot |
+--------------+--------------+USA 11 月的平均 weather_state 为 (15) / 1 = 15 所以天气类型为 Cold。
Australia 11 月的平均 weather_state 为 (-2 + 0 + 3) / 3 = 0.333 所以天气类型为 Cold。
Peru 11 月的平均 weather_state 为 (25) / 1 = 25 所以天气类型为 Hot。
China 11 月的平均 weather_state 为 (16 + 18 + 21) / 3 = 18.333 所以天气类型为 Warm。
Morocco 11 月的平均 weather_state 为 (25 + 27 + 31) / 3 = 27.667 所以天气类型为 Hot。
我们并不知道 Spain 在 11 月的 weather_state 情况所以无需将他包含在结果中。
2.代码实现
- 方法一:使用CASE
select t1.country_name as 'country_name',
case when avg(t2.weather_state)<=15 then 'Cold'when avg(t2.weather_state)>=25 then 'Hot'else 'Warm' END as 'weather_type'
from Countries t1 join Weather t2
where t1.country_id = t2.country_id and left(day,7) = '2019-11'
group by t1.country_id
group by 后面为优先考虑Weather 中的country_id ,并且最终的数据也是由Weather中的country_id决定的有哪些国家的数据
- 方法二:
巧妙使用IF嵌套
select country_name,
if(avg(weather_state)<=15,'Cold',if(avg(weather_state)>=25,'Hot','Warm')) as weather_type
from weather join countries
using(country_id)
where day like '2019-11%'
group by country_name
方法二还使用到了using的用法
using()
用于两张表的join查询,要求using()
指定的列在两个表中均存在,并使用之用于join的条件。
select a.*, b.* from a left join b using(colA);
等同于:
select a.*, b.* from a left join b on a.colA = b.colA;
用过if和using以后再也不想用case when和on
【LC简单】1294. 不同国家的天气类型相关推荐
- 【每日SQL打卡】DAY 24丨不同国家的天气类型【难度简单】
[未来的你,会感谢今天努力的你]每日两题,一难一易,每天进步一点点,可能会直接导致一场面试的成功,或工作的轻松搞定,从而升职加薪迎娶白富美,加油小伙伴!
- 天气api整理的最新天气类型汇总, 各种天气情况, 动态更新中
免费的天气api接口, 没有调用次数.频率和IP限制, 数据同步中国天气网, 永久免费, 请放心使用! https://www.tianqiapi.com/ 天气类型数据地址 https://www. ...
- c语言的各种类型的指针,简单总结C语言中各种类型的指针的概念
2016 这篇文章主要简单总结了C语言中各种类型的指针的概念,指针可以说是C语言本身所具有的最大特性,平时根据不同使用场合习惯地将其简单分类,需要的朋友可以参考下 C语言中有很多关于指针的使用,指针也 ...
- php 遍历目录函数,PHP 遍历指定目录所有文件函数的简单示例(可指定文件类型)...
这篇文章主要为大家详细介绍了PHP 遍历指定目录所有文件函数的简单示例(可指定文件类型),具有一定的参考价值,可以用来参考一下. 对PHP遍历指定目录下所有文件函数,可指定文件类型感兴趣的小伙伴,下面 ...
- Android 实现简单当前时间点的天气情况(和风天气接口)
今天闲来无事,通过和风天气接口实现了一个简单的获取当前时间点的天气情况,话不多说,直接给大家展示代码,功能是挺简单的, 1.获取数据的实体类: package wxc.com.weatheer;imp ...
- java char指针数组_简单总结C语言中各种类型的指针的概念
C语言中有很多关于指针的使用,指针也是C语言的灵魂所在,而且C语言中也有很多有关指针的概念,这里学习并总结了一些知道的概念. 常量指针:首先它是一个指针,常量只是用来修饰指针的定语.其定义如下: ch ...
- python中浮点数能用乘法吗_简单讲解Python中的数字类型及基本的数学计算
Python有四种类型的数字:1.整型 a = 2 print a 2.长整型 b = 123456789 print b 3.浮点数 c = 3.2E2 print c 4.复数 复数为实数的推广, ...
- 罗斯福国家森林树木类型识别
第1关:初窥数据 import pandas as pd import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt ...
- 【LC简单】603. 连续空余座位
❤️博客主页: 楚生辉 ❤️系列专栏:[LeetCode刷题] ❤️一句短话: 坚持不懈,孜孜不倦 1.题目描述 表: Cinema +-------------+------+ | Column N ...
最新文章
- Nature综述——真菌的多样性:真菌的高通量测序及鉴定
- c#_List<T>(IEnumerable<T>)
- BugkuCTF-Misc:又一张图片,还单纯吗
- 项目遇到的问题以及解决
- IO-BufferedInputStream
- 机器学习:从入门到晋级
- PHP中表单没有问题但是$_FILES为空的解决办法
- android注解处理技术APT
- 基于node.js和oicq的qq机器人 制作回顾分析笔记
- 使用pyenv和virtualenv搭建python虚拟环境实践总结
- 个人网站怎么建设,个人网站建设流程
- 渥太华大学计算机科学,加拿大渥太华大学计算机科学CO-OP录取
- 基于thinkphp开源cms 对比
- 计算机工程制图箭头怎么画,cad中箭头画法
- 传感器响应时间与滤波器截止频率的关系
- 常用颜色RGB、灰度值
- 干货|Android免Root最全Hook插件(免Root Hook任意App)
- Qt小项目之txt文本替换
- 使用CStdioFile::ReadString来逐行读取文件
- m3u8链接加密源码
热门文章
- vs code 关闭保存自动格式化 formatonsave - vscode
- java语言:PAT(1002)读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
- C语言 链表 Fire Emblem Echoes
- 一天测血压的最佳时间_一天二十四小时,什么时候身体时间测量血压最准确?...
- 苹果税遭重击!法院判决:App Store必须90天内开放第三方支付,苹果市值一夜蒸发5477亿...
- 启动docker步骤
- 知识表示学习与图嵌入综述
- IO流案例,集合到文件数据排序、复制单级和多级文件夹及复制文件的异常处理
- uni-app自定义导航栏右侧做增加按钮并跳转链接
- 解决 .git 目录过大问题