【问题标题】:Need to prepare a ranklist in mysql需要在mysql中准备一个ranklist
【发布时间】:2012-12-14 07:04:45
【问题描述】:

我有一张包含学生所有详细信息的表格。我已经为此准备了一个排名程序。 例如:

SELECT name, total_marks, @curRank := IF(@prevVal=total_marks, @curRank, @curRank+1) AS rank,
@prevVal:=total_marks
FROM marks, (
SELECT @curRank :=0, @prevVal:=null, @n:=1
) r
ORDER BY total_marks DESC ;

在此声明中。我需要检查是否有任何学生具有相同的等级。如果是这样,那么我必须检查特定的主题标记并相应地对其进行排序。

【问题讨论】:

  • 我想知道您的分数表包含一个学生的一个条目,或者每个学生有多个条目。

标签: mysql select


【解决方案1】:

我认为你可以这样做 -

SELECT rank, GROUP_CONCAT(name) FROM (
  -- your query goes here
  ...
  ...
  ...
) t
GROUP BY rank

CREATE TABLE marks(
  name VARCHAR(20),
  z INT(10),
  y INT(10),
  total_marks INT(10),
  rank INT(10)
);

INSERT INTO marks (name, z, y, total_marks, rank) VALUES ('abc', 100, 50, 150, 1);
INSERT INTO marks (name, z, y, total_marks, rank) VALUES ('abc', 100, 50, 150, 2);
INSERT INTO marks (name, z, y, total_marks, rank) VALUES ('abc', 100, 50, 150, 3);

INSERT INTO marks (name, z, y, total_marks, rank) VALUES ('def', 100, 50, 150, 1); 
INSERT INTO marks (name, z, y, total_marks, rank) VALUES ('def', 100, 50, 150, 2); 

INSERT INTO marks (name, z, y, total_marks, rank) VALUES ('abcdef', 100, 50, 150, 1);
INSERT INTO marks (name, z, y, total_marks, rank) VALUES ('abcdef', 100, 50, 150, 2);
INSERT INTO marks (name, z, y, total_marks, rank) VALUES ('abcdef', 100, 50, 150, 3);


SELECT rank, GROUP_CONCAT(name) FROM (
  SELECT name, MAX(rank) rank FROM marks GROUP BY name) t
GROUP BY rank;

+------+--------------------+
| rank | GROUP_CONCAT(name) |
+------+--------------------+
|    2 | def                |
|    3 | abc,abcdef         |
+------+--------------------+

用户 abcabcdef 具有相同的排名 (1,2,3)。 用户 def 有不同的等级 (1,2)。

【讨论】:

  • 您能否指定相同的内容,因为我无法获得正确的结果集
  • 好的,请为您的表提供 CREATE TABLE 和一些 INSERT 语句以测试查询。
  • 创建表标记 (name varchar(20),z int(10).y ​​int(10),total_marks int(10),rank int(10)) 这是插入的表插入语句进入标记(名称,z,y,total_marks,rank)值('abc',100,50,150,'');,插入标记(名称,z,y,total_marks,rank)值('def',100, 50,150,'');
  • 检查答案。这是你需要的吗?
猜你喜欢
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2018-12-14
  • 2015-12-19
  • 1970-01-01
相关资源
最近更新 更多