私は SQL が初めてで、クエリをさらに絞り込む方法があるかどうか疑問に思っていました。たとえば、生徒の名前とその成績を含むテーブルがあり、最高の成績を持つ生徒の名前を見つけたいとします。まで来ました
SELECT name FROM students ORDER BY grade DESC
しかし、それはすべての名前を返します。LIMITを使おうと思ったのですが、例えば2人の生徒の成績が同じ場合、2人とも返却してほしいです。
方法はありますか?
これはsqliteで動作すると思います。
select name from students where grade = (select max(grade) from students);
name が主キーであるかどうかについては言及されていないため、次のように使用することをお勧めします (name を PK とは見なしません)。
select distinct name from students where grade = (select max(grade) from students);
また、次のようにすることもできます:)
WITH CTE AS
(
SELECT
Name,
Grade,
DENSE_RANK() OVER (ORDER BY Grade desc) AS BestGrade
FROM
students
) SELECT * FROM CTE WHERE BestGrade = 1