hacker rankというコーティングテストのプラットフォームでクエリの問題をといていましたが、正解のクエリの挙動がどうも理解ができません。
該当問題はこちら
該当のクエリは、下記。
mysql
1select round(s.lat_n,4) from station s where (select round(count(s.id)/2)-1 from station) = (select count(s1.id) from station s1 where s1.lat_n > s.lat_n);
アウトプット
83.8913
分解すると
select round(count(s.id)/2)-1 from station;
アウトプット
249
select count(id) from station;
アウトプット
499
このクエリを素直にみると、1つ目のwhere句内は、249 = 499 を比較しているようにみえますが、恐らく、二つ目のwhere句である
where s1.lat_n > s.lat_n
が何と何を比較して絞りこんでいるのかがわかりません。lat_nであるのはわかりますが、素直にlat_nであると理解すると複数レコードのデータを比較していることになりますがそれはmysqlの文法上できないはずです。
どなたかがご存知でしたらご教示頂けると助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。