sql-server - SQL中序列中按类别划分的最大值
问题描述
一段时间以来一直试图想出一个解决方案,但没有成功。我正在使用 SQL Server 2012,我想知道如何通过 'id' 和 'cat' 获取列 'row_num_by_cat' 的最大值仅在“cat”列中找到不同的值或在“row_num_by_cat”列中开始新序列之前进行分区。黄色的“new_count_max”列显示了我正在寻找的内容。
您的帮助将不胜感激。
解决方案
你可以使用MAX(row_num) OVER
:
WITH cte AS (
SELECT *,SUM(CASE WHEN row_num > 1 THEN 0 ELSE 1 END)
OVER(PARTITION BY id, cat ORDER BY date_col) AS grp
FROM tab
)
SELECT *, MAX(row_num) OVER(PARTITION BY id, cat, grp) AS new_count_max
FROM cte
ORDER BY id, date_col, cat;
推荐阅读
- python-3.x - tensorflow image_dataset_from_directory 与 PIL 负载的区别
- sql - 这两个数据库查询在代数上是否相同?
- python - 基于 pyplot 点创建逻辑回归模型时出错
- python - 比较两个基于 Lucene 的查询
- discord.py - Discord.py 禁止所有不和谐的机器人命令
- process - 为什么任务管理器进程中没有“.exe”
- mysql - MySQL 在午夜后突然磁盘 I/O 很高
- machine-learning - 墙壁损坏检测
- powershell - Invoke-Command 可以访问远程机器上的文件吗?
- python - 汇总 DataFrame 列而不删除列