sql - 使用 Row_Number 函数
问题描述
我的数据看起来像这样 -
clientid calendar Num
18161 20170518 1
18161 20170705 0
18161 20170718 0
43431 20150518 0
客户的第一个 0Num
在18161
第二个日历上。客户的第一个 0Num
在43431
第一个日历 ( 20150518
) 上。我想要一个 SQL 来生成这个输出 -
clientid FirstZero
18161 2
43431 1
这是我到目前为止所拥有的,但是正在为 all 生成 row_number calendars
。Num
对于特定客户,我第一次需要它变成零。
SELECT clientid, calendar,
Row_Number() Over (order by clientid) As FirstZero
from DAILY
where num = 0
and clientid = 18161
解决方案
干得好:
select
clientid,
min(pos) as firstzero
from (
select
clientid,
num,
row_number() over(partition by clientid order by calendar) as pos
from daily
) x
where num = 0
group by clientid
推荐阅读
- android - NotificationCompat.Builder 中的 setTimeoutAfter 不起作用
- android - 如何在 Android 中为 Graffiti 应用程序创建滴水喷雾罐工具
- docker - 为什么 Gitlab-CI 有时会使用 root 所有者创建项目目录(但我指定了另一个用户)以及如何解决它?
- authentication - 在整个应用程序中登录不是持久的 YII2
- java - 从插件目录将 jars 添加到 Docker 映像
- apache-spark - 运行总和/累积总和与地板和天花板 Py Spark
- scala - 如何在火花中将数据集 [行] 保存为文本文件?
- python - 使用 Numpy Array 遍历 .txt 文件中的时间序列数据
- maven - 运行 wildfly:run 目标后,有没有办法使用 maven build 进行处理?
- php - Polylang 翻译网址 slug 无法正常工作