sql - 如何按每个学生 ID 计算组的总数
问题描述
GROUP STUDENT COUNT OF GROUP FOR EACH STUDENT
GROUP A ST 1 1
GROUP A ST 2 2
GROUP B ST 2 2
GROUP A ST 3 2
GROUP B ST 3 2
GROUP B ST 3 2
如何计算一个学生进入一个小组的次数。前任。ST 1 只有一个 A 组条目,但 ST2 和 ST3 有 2 个组条目,与行无关。
请任何人帮助此 SQL 代码。谢谢
解决方案
理想情况下,您希望count(distinct)
作为窗口函数:
select t.*,
count(distinct group) over (partition by student) as cnt_group
from t;
但是 SQL Server 不支持distinct
窗口函数。相反,您可以使用解决方法的总和dense_rank()
:
select t.*,
(-1 +
dense_rank() over (partition by student order by group asc) +
dense_rank() over (partition by student order by group desc)
) as num_groups
from t;
推荐阅读
- nginx - 如何使用 Nginx 在 Plone 4.3 中加载图像
- java - 我正在尝试创建一个包含一定数量元素的数组,但是当使用变量时它不起作用
- javascript - 如何在后端创建一个对每个用户都是唯一的计时器,可以使用 socketio 事件清除它
- pointers - %s 和 %S 之间的差异
- c++ - 使用链表的摘要报告代码中的错误
- c++ - OpenCV 警告:重载的虚函数仅被部分覆盖
- python - 如何更新列中的值?
- python - 程序如何使用递归和 for 循环 在下面的程序中需要 tail 作为函数参数吗?
- python - 我想在python中打印能被5整除的数字
- javascript - 错误消息:Create-react-app-index.pack.js:1 Uncaught SyntaxError: Unexpected token '<'