22,209
社区成员
发帖
与我相关
我的任务
分享
SELECT a.班级
,AVG(数学) AS 数学
FROM ( SELECT DISTINCT
班级
FROM [table]
) AS a
CROSS APPLY ( SELECT TOP 20 PERCENT
数学
FROM [table]
WHERE 班级=a.班级
ORDER BY 数学 DESC
) AS b
GROUP BY a.班级
ORDER BY 数学 DESC;
select AVG(数学) from Table t where 学号 in(select top 20 percent 学号 from Table where 班级=t.班级 order by 班排 ASC) Group by 班级
;WITH tb(班级,学生,数学) AS
(
SELECT 1,'A',80
UNION ALL
SELECT 1,'B',90
UNION ALL
SELECT 1,'C',60
UNION ALL
SELECT 1,'D',70
UNION ALL
SELECT 1,'E',85
UNION ALL
SELECT 2,'F',80
UNION ALL
SELECT 2,'G',80
UNION ALL
SELECT 2,'H',80
UNION ALL
SELECT 1,'I',90
UNION ALL
SELECT 1,'J',60
UNION ALL
SELECT 1,'K',70
UNION ALL
SELECT 1,'L',85
UNION ALL
SELECT 1,'M',80
),tb1 AS(
SELECT *,
NTILE(5) OVER (PARTITION BY 班级 ORDER BY 数学) AS RNr
FROM tb)
SELECT 班级,AVG(数学)
FROM tb2
WHERE tb1.RNr = 1
GROUP BY 班级