显示名称最短和最长的城市

时间:2020-05-12 16:01:59

标签: mysql sql

我在问一个被告知的问题:

“查询表中具有最短和最长城市名称以及它们各自的长度(即名称中的字符数)的两个城市。如果最小或最大城市超过一个,则选择一个首先按字母顺序排列。”

我正在运行以下代码,但是它一直说我的答案是错误的:

const Sequelize = require('sequelize').Sequelize;

const sequelize = new Sequelize('projectname','postgres','password',{
    host: 'localhost',
    dialect: 'postgres', 

});

module.exports = sequelize;

为什么这样不起作用?

2 个答案:

答案 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

相关问题