我需要在“中值”列中获取中值。有什么想法吗?
SELECT
MIN(score) min, CAST(AVG(score) AS float) median, MAX(score) max
FROM result JOIN student ON student.id = result.student_id
最佳答案
我认为最简单的方法是 PERCENTILE_CONT()
或 PERCENTILE_DISC()
:
SELECT MIN(score) as min_score,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY score) as median_score,
MAX(score) max_score
FROM result r JOIN
student s
ON s.id = r.student_id;
这假设(合理地)score
是数字。
PERCENTILE_CONT()
和 PERCENTILE_DISC()
之间的区别是当值的数量为偶数时会发生什么。这通常是一个不重要的考虑因素,除非您的数据量很小。
关于sql - 如何提取中值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43430759/