【问题标题】:How to group in fixed count ranges?如何在固定计数范围内分组?
【发布时间】:2010-12-16 02:12:13
【问题描述】:

假设我有一个包含两列 (student_id,grade) 的表。

student_id 是整数,grade 是十进制数。

如果我有 1000 名学生,并且想按年级将他们分组,每组 10 名学生。

为了清楚起见,这应该产生 100 个组。第一组包含 10 个最高成绩,最后一组包含 10 个最低成绩。

我应该怎么做? 总是欢迎优化。

非常感谢。

若昂

【问题讨论】:

  • 标题中不需要[SQL],给定sql标签。
  • 您的问题不一致。甚至可能没有10个不同的等级。您是否真的是说“第一组包含 10 名最高的学生,最后一组包含 10 名最低的学生”。 ??如果你这样做了,那么意识到这可能是不可能的,因为具有相同年级的学生组可能会跨越(跨越)基于学生数量的组边界。
  • Charles,第一组包含有 10 个最高成绩的学生的 id 和各自的成绩。如果有 13 个等级等于最大值,我想要的结果是第一组有 10 个,第二组有 3 个。

标签: sql postgresql


【解决方案1】:

ntile 将根据桶的数量给出排名。

select student_id, ntile(100) over (order by grade desc) from student

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2011-08-05
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多