sql - MS SQL 统计过去 7 天内满足相同条件的案例数
问题描述
我想在 SQL“PriorityCountInLast7Days”中生成一个列,该列计算优先级与该情况相同的情况的数量。我如何在 SQL 中执行此操作?
对于每个 Emp1,计算 priorityinthelast7days = priorityatcurrentdate 的数量以生成 PriorityCountinLast7days。大小写只是每一行的唯一标识符。
+------------+------+----------+--------------------------+
| Date | Emp1 | Priority | PriorityCountinLast7days |
+------------+------+----------+--------------------------+
| 2018-06-01 | A | 0 | 0 |
| 2018-06-03 | A | 0 | 1 |
| 2018-06-03 | A | 0 | 2 |
| 2018-06-03 | A | 1 | 1 |
| 2018-06-03 | A | 2 | 1 |
| 2018-06-04 | A | 0 | 3 |
| 2018-06-01 | B | 0 | 1 |
| 2018-06-02 | B | 0 | 2 |
| 2018-06-03 | B | 0 | 3 |
+------------+------+----------+--------------------------+
解决方案
您可以尝试交叉应用子查询,该查询从相对于当前行的日期的最后 7 天获取具有相同优先级的同一员工的案例计数。
SELECT t1.date,
t1.emp1,
t1.[case],
t1.priority,
x.c prioritycountinlast7days
FROM elbat t1
CROSS APPLY (SELECT count(*) c
FROM elbat t2
WHERE t2.emp = t1.emp
AND t2.priority = t1.priority
AND t2.date >= dateadd(day, -7, t1.date)
AND t2.date <= t1.date) x;
我仍然不知道,是否应该计算当前的案例。随着更多的样本数据表明是的,我就是这样写的。如果不应该计算,请添加AND t2.case <> t1.case
到WHERE
子句中。
推荐阅读
- apache - Jmeter - Cookie 不在标头中,因为它们在浏览器中
- django - 使 django 属性成为抽象属性
- html - 从html网页解码highcharts数据
- graalvm - GraalVM 目录是否已关闭?
- c# - 如何在 vuforia 中使用 hololens
- javascript - 请有人可以解释这个简短而甜蜜的javascript代码
- python - 我怎样才能找到 2 列的唯一组合,删除不是唯一的组合,只保留熊猫的第一行
- powerbi - DAX 计算列考虑多行以生成结果
- c# - 动态订阅方法中的事件?
- azure - 通过私有终结点将 Azure WebApp 服务连接到 SQL 托管实例