我在问一个被告知的问题:
“查询表中具有最短和最长城市名称以及它们各自的长度(即名称中的字符数)的两个城市。如果最小或最大城市超过一个,则选择一个首先按字母顺序排列。”
我正在运行以下代码,但是它一直说我的答案是错误的:
const Sequelize = require('sequelize').Sequelize;
const sequelize = new Sequelize('projectname','postgres','password',{
host: 'localhost',
dialect: 'postgres',
});
module.exports = sequelize;
为什么这样不起作用?
答案 0 :(得分:0)
您也可以使用
select a.CITY, t.max_len, b.CITY, t.min_len
from (
SELECT max(LENGTH(CITY)) max_len , min(LENGTH(CITY)) min_len
FROM STATION
) t
INNER JOIN STATION a ON a.LENGTH(CITY) = t.max_len
INNER JOIN STATION b ON b.LENGTH(CITY) = t.min_len
答案 1 :(得分:0)
使用ROW_NUMBER()
两次以获取具有最小和最大长度的城市:
SELECT t.CITY, t.LEN
FROM (
SELECT CITY, LENGTH(CITY) LEN,
ROW_NUMBER() OVER (ORDER BY LENGTH(CITY), CITY) as rn1,
ROW_NUMBER() OVER (ORDER BY LENGTH(CITY) DESC, CITY) as rn2
FROM STATION
) t
WHERE 1 IN (t.rn1, t.rn2)
查看简化的demo。