V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Stitch
V2EX  ›  问与答

SQL 数据库查询:从考试成绩表中查询出来所有同学的同一个课程的最高分数

  •  
  •   Stitch · 2018-04-10 11:48:07 +08:00 · 4713 次点击
    这是一个创建于 2427 天前的主题,其中的信息可能已经有所发展或是发生改变。
    成绩表中有每个学生的考试数据,同一个课程可以考试多次,展示时以最高分数为准。
    sql 语句如何查询到每个学生的每个课程的最高成绩,还要包括班级信息和课程信息。

    数据表示例:
    index name class course score
    1 xiaoming A math 100
    2 xiaoming A math 90
    3 xiaosong B math 99
    4 xiaosong B math 85
    5 c A math 96
    6 c A math 94
    7 d A math 88
    8 d A math 78
    9 e A math 80
    10 e A math 70
    11 e A math 60
    12 e A math 50


    数据库查询:从考试分数表中查询出来所有同学的同一个课程的最高分数
    查询结果是:1,5,7,9 行数据,要求把这记录全部拿出来,包括班级和课程信息

    请问各位大声:

    1、sql 语句如何编写?

    2、如果用 django 的 orm 查询,要求结果是该表中的每个记录对象,该如何编写
    第 1 条附言  ·  2018-04-10 12:39:15 +08:00
    查询出来的结果应该是这样的:
    index name class course score
    1 xiaoming A math 100
    3 xiaosong B math 99
    5 c A math 96
    7 d A math 88
    9 e A math 80
    6 条回复    2018-04-10 13:55:57 +08:00
    ebony0319
        1
    ebony0319  
       2018-04-10 12:15:24 +08:00 via Android
    子关联查询,大概就是这样,select * from A a where 1>=(
    select * from A where a.score>=score)
    手机打的,很不方便,大概就是这样。
    ebony0319
        2
    ebony0319  
       2018-04-10 12:16:10 +08:00 via Android
    错了,里面还要一个条件 学科=学科。
    huba
        3
    huba  
       2018-04-10 12:23:55 +08:00 via Android
    坐等正确答案
    kyuuseiryuu
        4
    kyuuseiryuu  
       2018-04-10 12:58:10 +08:00 via iPhone
    作业请自己完成✅
    Molita
        5
    Molita  
       2018-04-10 13:00:32 +08:00 via Android
    作业 请独立完成
    SbloodyS
        6
    SbloodyS  
       2018-04-10 13:55:57 +08:00
    SELECT
    class,
    `name`,
    MAX(score)

    FROM
    main.test_v2ex
    GROUP BY `name`,class
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   931 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:36 · PVG 06:36 · LAX 14:36 · JFK 17:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.