[SQL Runday] HackerRank Weather Observation Station 5


STATIONテーブルでは、2つの名前が最も短く、最も長い都市(各都市に1つの長さがある)を検索します.
--1つまたは複数の場合は、アルファベット順に検索します.

Key Points

  • function LENGTH()
  • バイト数
  • 文字の関数です.
  • 英語は
  • で構わないが、ハングルを計算するにはCHAR_LENGTH()を使う.
  • Errors


  • サブクエリの使用中にEvery derived tableに独自の別名が必要というエラーが発生しました.

  • サブクエリに別名(名前)が指定されていないためです.
    SELECT * FROM ( SELECT * FROM table )subtable
  • このように指定しましょう
    問題を見て最初に聞いた考えはmax、minを求めるテーブルを作ることです.
    だから次のように近づいた.
    SELECT city, char_length(city) FROM station as a,
    (
    SELECT MIN(char_length(city)) as mini, 
    MAX(char_length(city)) as maxi from station
    ) as m
    WHERE char_length(city) = m.maxi
    OR char_length(city) = m.mini
    ORDER BY city
    ここまでminmaxは別々に照会されますが、アルファベット順に1つ表示するにはどうすればいいか分かりません
    最終的には快適な方法で回転します
    maxとminでクエリーして表を貼り付けます
    SELECT city, char_length(city) as lengths FROM station
    GROUP BY city
    ORDER BY lengths, city
    LIMIT 1;
    
    SELECT city, char_length(city) as lengths FROM station
    GROUP BY city
    ORDER BY lengths DESC, city
    LIMIT 1;
    どの方法が適当かはわかりませんが、最初の方法では何を書くか分かりません