1

私は SQL が初めてで、クエリをさらに絞り込む方法があるかどうか疑問に思っていました。たとえば、生徒の名前とその成績を含むテーブルがあり、最高の成績を持つ生徒の名前を見つけたいとします。まで来ました

SELECT name FROM students ORDER BY grade DESC

しかし、それはすべての名前を返します。LIMITを使おうと思ったのですが、例えば2人の生徒の成績が同じ場合、2人とも返却してほしいです。

方法はありますか?

4

3 に答える 3

6

これはsqliteで動作すると思います。

select name from students where grade = (select max(grade) from students);
于 2012-08-09T22:50:37.070 に答える
1

name が主キーであるかどうかについては言及されていないため、次のように使用することをお勧めします (name を PK とは見なしません)。

select distinct name from students where grade = (select max(grade) from students);
于 2013-04-24T09:03:10.823 に答える
0

また、次のようにすることもできます:)

WITH CTE AS
(
    SELECT
    Name,
    Grade,
    DENSE_RANK() OVER (ORDER BY Grade desc) AS BestGrade
FROM
    students
) SELECT * FROM CTE WHERE BestGrade = 1
于 2013-04-24T08:48:16.223 に答える