sql - 当组合列的日期计数大于2时,如何检查一列的数据是否存在
问题描述
假设我有一张桌子 A:
我想检查 Name , class,roll,subjects 是否相同,如果这 4 个组合的日期数大于 2,则标记的检查值必须大于 0。
Name Class Roll Subject Marks Date
a 1 1 abc 10 01.01.2001
a 1 1 abc 02.01.2001
a 1 1 abc 30 03.01.2001
b 2 2 xyz 10 01.01.2001
b 2 2 xyz 02.01.2001
b 2 2 xyz 20 03.01.2001
从上表来看,
由于 a,1,1,abc 是相同的,我想检查标记是否对 date > datecount(2) 有任何值。在这种情况下是 03.01.2001,对于 b,2,2,xyz 也是 03.01.2001
解决方案
您可以使用 ROW_NUMBER() 检查相同的内容
WITH subset1
AS (SELECT dd.*,
Row_number()
over(
PARTITION BY name, class, roll, subject
ORDER BY date1) rw
FROM data dd)
SELECT marks,
ss.*
FROM subset1 ss
WHERE rw = 3;
推荐阅读
- vb.net - 如何将 vb.net 表单自动适应任何屏幕分辨率?
- c# - 如何将操作应用于对象?
- linux - 无法在 Jupyter-notebook 中访问我的主树
- java - Oracle Mobile Hub 与 Oracle 云数据库 (ADW)
- powershell - Powershell 似乎无法通过 telgram API 的 Invoke Webrequest 下载文件
- dataframe - Julia - 以另一个数据框中的列为条件选择数据框的子集
- command - 使用 popen 或 ShellExecute 以编程方式从命令提示符获取 winget 输出,不工作
- r - 更改条形图上的 x 和 y 标签
- r - 允许滚动越过闪亮仪表板的底部
- javascript - 如何对 json 元素进行分组以进行交换