【问题标题】:How to select the highest score of more than one same courses in MySQL?如何在MySQL中选择多门相同课程的最高分?
【发布时间】:2013-07-10 08:04:27
【问题描述】:

表格:MAST_CAT_HS

EMPLID | CONV_GRADE_OFF | MAST_CAT


1 90 化学

1 90 PHSC

1 75 数学

1 95 数学

1 50 英语

1 90 数学

1 90 化学

1 90 PHSC

1 65 总线

2 90 英语

2 80 数学

想要得到这样的结果:

EMPLID | CONV_GRADE_OFF | MAST_CAT


1 90 化学

1 90 PHSC

1 95 数学

1 50 英语

1 65 总线

2 90 英语

2 80 数学

很遗憾,我们无法对 MAST_CAT 列做出任何假设 =( 这是我的查询。它不会将具有相同课程和相同分数的多行合并到 单行。 我的做法是这样的:

SELECT sr1.EMPLID, sr1.CONV_GRADE_OFF, sr1.MAST_CAT
FROM MAST_CAT_HS sr1
LEFT JOIN MAST_CAT_HS sr2
  ON sr1.EMPLID = sr2.EMPLID 
 AND sr1.MAST_CAT = sr2.MAST_CAT
 AND sr1.CONV_GRADE_OFF < sr2.CONV_GRADE_OFF
WHERE sr2.EMPLID IS NULL

【问题讨论】:

  • 如果您设置SQL Fiddle,我们会更容易为您提供帮助
  • 如果您在SELECT 之后添加了DISTINCT 关键字,或者您在WHERE 子句之后添加了GROUP BY sr1.EMPLID, sr1.CONV_GRADE_OFF, sr1.MAST_CAT,您的查询将返回指定的结果集。

标签: mysql sql max


【解决方案1】:
SELECT emplid, MAX(conv_grade_off), MAST_CAT
FROM MAST_CAT_HS
GROUP by elplid, mast_cat

按ip和mast_cat分组,选择分组行的最高分

【讨论】:

  • 有效!非常简单直接 =) 非常感谢!@user1281385
猜你喜欢
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-12
  • 2021-03-05
  • 1970-01-01
  • 2013-03-17
相关资源
最近更新 更多