sql - 如何提取中值?

标签 sql postgresql

我需要在“中值”列中获取中值。有什么想法吗?

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/

相关文章:

sql - SQL 中的 CHAR 数据类型是否已过时?你什么时候使用它?

sql - 从 PostgreSQL DB 查询时间戳的最大值

postgresql - 在 Postgres Docker 镜像中进行 Sequelize

java - 将数据从应用程序(Java)导入临时表的最快方法是什么?

java - 将文本字段与 Java 中的复选框关联起来

sql - SUM 两个 CASE 函数

php - 获取用户名和密码进行身份验证

sql - 为什么这个 MySQL Create Table 语句会失败?

postgresql - 如何使用 lib/pq 将 hstore 对象插入到 postgres

sql - rails : Get related records having belonging to category having a particular enum attribute