【发布时间】:2020-12-23 12:53:54
【问题描述】:
请帮助我从结果表中一次计算学生的 MIN、MEDIAN 和 MAX 分数。结果表:id、student_id、score
我找到了使用以下代码获取中值的方法,但它仅返回中值。我怎样才能添加最小值和最大值?非常感谢
SELECT AVG(SCORE)::INT AS MEDIAN
FROM
(SELECT *,
row_number() over(order by score desc) as desc_sc,
row_number() over(order by score asc) as asc_sc
FROM result
) as a
WHERE asc_sc IN (desc_sc,desc_sc+1,desc_sc-1)
【问题讨论】:
-
请帮助我们了解更多信息。你的数据库是什么?
-
嗨@VBoka,谢谢你的提问。实际上我给了你“结果表:id,student_id,score”。另外,我很新,所以希望你能告诉我你还需要什么。
-
嗨@HoangNhi 对不起,我不明白你的回答。我问了你的数据库。此外,我们需要查看您希望通过查询获得的数据,而不是这样:“结果表:id,student_id,score”。我们想看看您在执行查询后希望获得哪些数据。结果表是您的源表。该表中有一些数据吗?向我们展示该表中的几行以及您希望从该数据中获得的结果。另外,再来一次,您使用什么数据库:Oracle、SQLServer、MySQL....让我们知道...
-
嗨@HoangNhi 任何反馈都会很好。你有两个答案,他们好吗?是的,太好了,如果您愿意,请接受它们...如果没有,请评论为什么不...干杯!
-
对于迟到的回复,我深表歉意。第一个答案帮助我修复了我的错误代码,我也感谢第二个答案中百分位数的想法。感谢您的评论,下次我肯定会给出更清晰的示例输入和预期输出问题。最好的问候!