sql - 解析函数:ROW_NUMBER( )
问题描述
我有一张“发票”表
id integer Primary key
customer_id Integer
total Number (*,2)
查询是向别名为“SNO”的每个客户显示所有 customer_id、total 和 running 序列号。并且记录应该根据customer_id升序显示,然后按SNO显示。
提示:
- 解析函数:ROW_NUMBER( )
- 解析子句:query_partition_clause 和 order_by_clause。
我写了以下查询:
Select customer_id,
total,
ROW_NUMBER( ) OVER (PARTITION BY customer_id ORDER BY customer_id ASC) AS "SNO"
from invoice;
但结果是失败。我错过了什么。还有什么意思是“记录应该根据customer_id升序显示,然后按SNO ”。
我得到的结果如下:
CUSTOMER_ID TOTAL SNO
1 70000 1
2 250000 1
2 560000 2
3 200000 1
3 45000 2
4 475000 1
5 50000 1
5 10000 2
6 600000 1
6 90000 2
预期结果是:
CUSTOMER_ID TOTAL SNO
1 70000 1
2 250000 1
2 560000 2
3 45000 1
3 200000 2
4 475000 1
5 10000 1
5 50000 2
6 600000 1
6 90000 2
TOTAL 列数据不匹配。
解决方案
你很接近,你可能需要订购row_number
(id
假设它是根据时间升序的)
Select customer_id,
total,
ROW_NUMBER( ) OVER (PARTITION BY customer_id ORDER BY id ASC) AS "SNO"
from invoice
order by customer_id, "SNO" -- should be the default anyway (but there's no guarantee)
推荐阅读
- powerbi - PowerBI中同一列的前几行的总和
- amazon-web-services - AWS lambda:“无法导入模块‘app’:没有名为‘models’的模块”
- javascript - firestore 问题,我的数据未提交我收到 http 405 not allowed 错误
- reactjs - 带有笑话快照测试的 React 17 JSX 导入
- javascript - 如何在 DropzoneJs 中自定义 dropzone 区域?
- multithreading - 分段错误 - 无效的内存引用(条件跳转或移动取决于未初始化的值)
- node.js - 如何使 Azure 服务总线 Node.js 客户端通过 HTTPS(端口 443)而不是端口 5671 连接?
- .net-core - .NET Core 只能发布为可移植的
- react-native - React Native Text 自定义省略号
- python - Python网页抓取图片路径,但标签和值不在同一行,无法得到结果