当前位置:   article > 正文

MySQL中查询获取每个班级成绩前三名的学生信息_查询每个系总成绩前三名学生的姓名

查询每个系总成绩前三名学生的姓名
  1. CREATE TABLE t_testscore( pk_id INT PRIMARY KEY, c_name VARCHAR(50) , c_score INT, c_class INT )DEFAULT CHARSET=utf8;
  2. INSERT INTO t_testscore VALUES (1, '张三6', 66, 1),(2, '张三5', 65, 1),(3, '张三4', 64, 1), (4, '张三3', 63, 1),(5, '张三2', 62, 1);
  3. INSERT INTO t_testscore VALUES (11, '李四6', 76, 2),(12, '李四5', 75, 2),(13, '李四4', 74, 2), (14, '李四3', 73, 2),(15, '李四2', 72, 2);

  1. SELECT * FROM t_testscore t WHERE EXISTS(SELECT COUNT(*) FROM t_testscore ts WHERE ts.c_score>=t.c_score and ts.c_class=t.c_class GROUP BY ts.c_class HAVING COUNT(*)<=3)
  2. ORDER BY c_class,c_score DESC;

上述的sql语句在执行过程中相当于一个for循环处理,将t表中的每一条record取出来去跟ts中的数据做比较,如果满足条件就将数据进行展示。

转换成java的伪代码可以这样理解:

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. public class Top3Score {
  4. public static void main(String[] args) {
  5. List<Record> recordList = RecordMapper.getAllRecord();
  6. List<Record> res = new ArrayList<>();
  7. for (Record recordComp : recordList){
  8. for (Record record: recordList){
  9. if (record.getClassNo() == recordComp.getClassNo()
  10. && record.getScore() >= recordComp.getScore()
  11. && getRankOfScoreInClass(record,recordList) <= 3){
  12. res.add(record);
  13. }
  14. }
  15. }
  16. System.out.println(res.toString());
  17. }
  18. private static int getRankOfScoreInClass(Record record,List<Record> recordList){
  19. int rank = 1;
  20. for (Record recordEle : recordList){
  21. if (record.getScore() < recordEle.getScore()){
  22. rank++;
  23. }
  24. }
  25. return rank;
  26. }
  27. private class Record{
  28. private int id;
  29. private String name;
  30. private int score;
  31. private int classNo;
  32. public int getId() {
  33. return id;
  34. }
  35. public String getName() {
  36. return name;
  37. }
  38. public int getScore() {
  39. return score;
  40. }
  41. public int getClassNo() {
  42. return classNo;
  43. }
  44. }
  45. private static class RecordMapper{
  46. private static List<Record> getAllRecord(){
  47. return new ArrayList<>();
  48. }
  49. }
  50. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/381294?site=
推荐阅读
相关标签
  

闽ICP备14008679号