sql分組后取每組前三


對數據進行分組,取每組前三條數據

INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('1', '張三', '50');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('2', '張三', '60');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('3', '張三', '70');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('4', '張三', '66');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('5', '張三', '55');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('6', '張三', '77');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('7', '李四', '32');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('8', '李四', '45');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('9', '李四', '33');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('10', '李四', '28');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('11', '李四', '60');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('12', '李四', '55');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('13', '王五', '99');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('14', '王五', '107');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('15', '王五', '88');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('16', '王五', '65');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('17', '王五', '72');
INSERT INTO `sakila`.`tt` (`id`, `name`, `score`) VALUES ('18', '王五', '126');
inster

數據如下

 

 題目:分組取每人最好成績的前三條

select * from tt as t1 where (select count(*) from tt where name=t1.name and score>=t1.score)<=3 ORDER BY score desc 

 

 

題目:取每人最好成績,按最好成績排名;

select name,max(score) from tt GROUP BY name ORDER BY max(score) desc 

取每人最平均成績,按照平均成績倒序排名

select  `name`,avg(score) from tt GROUP BY `name` ORDER BY avg(score) desc 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM