力扣题目跳转(. - 力扣(LeetCode))
表:
Weather
+-------------+------+ | Column Name | Type | +-------------+------+ | city_id | int | | day | date | | degree | int | +-------------+------+ (city_id, day) 是该表的主键(具有唯一值的列的组合)。 该表中的每一行都包含某一天某个城市的天气程度。 所有的学位都是在 2022 年获得的。
题目要求:
编写解决方案,找出每个城市中有最高温度记录的日子。如果同一城市多次记录最高气温,则返回其中最早的一天。
返回按 city_id
升序排序 的结果表。
查询结果格式示例如下。
示例 1:
输入: Weather 表: +---------+------------+--------+ | city_id | day | degree | +---------+------------+--------+ | 1 | 2022-01-07 | -12 | | 1 | 2022-03-07 | 5 | | 1 | 2022-07-07 | 24 | | 2 | 2022-08-07 | 37 | | 2 | 2022-08-17 | 37 | | 3 | 2022-02-07 | -7 | | 3 | 2022-12-07 | -6 | +---------+------------+--------+ 输出: +---------+------------+--------+ | city_id | day | degree | +---------+------------+--------+ | 1 | 2022-07-07 | 24 | | 2 | 2022-08-07 | 37 | | 3 | 2022-12-07 | -6 | +---------+------------+--------+ 解释: 城市 1 的最高气温出现在 2022-07-07,为24度。 城市 2 的最高气温出现在 2022-08-07 和 2022-08-17,为37度。我们选择较早的日期 (2022-08-07)。 城市 3 的最高气温记录在 2022-12-07 年,为-6 度。
case 1 的建表语句。
Create table If Not Exists Weather (city_id int, day date, degree int)
Truncate table Weather
insert into Weather (city_id, day, degree) values ('1', '2022-01-07', '-12')
insert into Weather (city_id, day, degree) values ('1', '2022-03-07', '5')
insert into Weather (city_id, day, degree) values ('1', '2022-07-07', '24')
insert into Weather (city_id, day, degree) values ('2', '2022-08-07', '37')
insert into Weather (city_id, day, degree) values ('2', '2022-08-17', '37')
insert into Weather (city_id, day, degree) values ('3', '2022-02-07', '-7')
insert into Weather (city_id, day, degree) values ('3', '2022-12-07', '-6')
一 增加一列排名,按照 city id 分组 按照 degree 降序排名并且 day 升序排名。
select * , rank() over (partition by city_id order by degree desc, day) as rn from weather
输出如下
二 使用 cte 表达式选取 rn = 1的数据即可。
with tmp as (select * , rank() over (partition by city_id order by degree desc, day) as rn from weather) select city_id, day, degree from tmp where rn = 1 order by city_id;
输出如下
以上就是全部答案,如果对你有帮助请点个赞,谢谢。
来源:力扣(leecode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
转载请注明出处:
我会尽快把力扣上的所有数据库题目发出来。感兴趣的可以点个赞与关注。每天不定时跟新。