在 SQL 中创建组 ID

Posted

技术标签:

【中文标题】在 SQL 中创建组 ID【英文标题】:Create Group ID in SQL 【发布时间】:2021-06-01 16:04:02 【问题描述】:

我有一张桌子,例如:

GROUP STUDENT GRADE
1 1 10
1 2 8
1 3 10
2 1 7
2 2 8
3 1 5
4 1 9
4 2 8
4 3 9
4 4 8
5 1 3
5 2 2
6 1 10

组的长度不同。

如何在 SQL 中为变量 GROUP 的每 2 个类别(或 n 个)分配一个组 ID,以获得 GROUP_ID 列,例如:

GROUP_ID GROUP STUDENT GRADE
1 1 1 10
1 1 2 8
1 1 3 10
1 2 1 7
1 2 2 8
2 3 1 5
2 4 1 9
2 4 2 8
2 4 3 9
2 4 4 8
3 5 1 3
3 5 2 2
3 6 1 10

【问题讨论】:

请注意:group 是 SQL 中的关键字,可能不应该用作列名。 即使是保留关键字... 【参考方案1】:

你可以使用算术:

select ceiling(groupcol / 2.0)

如果你的groupcol有空格,那么你可以使用dense_rank()

select ceiling(dense_rank() over (order by groupcol) / 2.0)

【讨论】:

我有一个未排序的 groupcol,可以假设任何整数值,ceiling 可以吗?【参考方案2】:

如果GROUP 计数没有间隙,则任何N 的通用公式为GROUP_ID 是:(GROUP - 1) / N + 1。 如果确实有差距,您可以使用dense_rank() over (order by group) 而不是GROUP

【讨论】:

以上是关于在 SQL 中创建组 ID的主要内容,如果未能解决你的问题,请参考以下文章

在 ASmack 中创建组

如何在 django 中创建组权限

在 Drupal 中创建组结构

根据值从表中创建组/块

如何在xslt中创建组?

android中怎么创建一个表格?