sql - 最短和最长的城市名称
问题描述
用最短和最长的CITY名称查询STATION中的两个城市,以及它们各自的长度(即:名称中的字符数)。如果有多个最小或最大的城市,请选择按字母顺序排列的第一个城市。
请问我可以知道这个问题的答案吗?
SELECT CITY,
LENGTH(CITY)
FROM STATION
ORDER BY CITY ASC
FETCH FIRST 1 ROWS ONLY ;
为什么此查询不适用于获取最短长度城市?
解决方案
我会ROW_NUMBER
在这里使用:
WITH cte AS (
SELECT s.*, ROW_NUMBER() OVER (ORDER BY LENGTH(CITY), CITY) rn_first,
ROW_NUMBER() OVER (ORDER BY LENGTH(CITY) DESC, CITY) rn_last
FROM STATION s
)
SELECT CITY, LENGTH(CITY) AS CITY_LENGTH
FROM cte
WHERE 1 IN (rn_first, rn_last)
ORDER BY LENGTH(CITY);
这将生成两个记录结果集,最短的城市名称出现在最前面,最长的出现在最后。
推荐阅读
- python - 出于某种原因,bs4 beautiful soup 找不到 div 和 div
- r - 在 ggplot2 条形图中突出显示与个人特定 PDF 报告相对应的单个条形
- c# - PredicateBuilder 在值为 null 时包含中断
- windows - 为未知设备创建驱动程序
- r - 是否可以在 R 中的一次调用中按条件选择一个变量,然后选择其他一些变量?
- r - data.table 中组之间项目的交集
- python - Django self.save() 不更新模型的状态
- html - 将元素定位在两者都在的元素内
- 元素?
- android - 如何确定 Android 10 设备加入的多播组?
- rust - 如何通过特征委托具有非静态参数的异步函数?