sql - 我想根据组在我的查询中给出序列号
问题描述
根据我的以下查询,它按数据打印分组,但我想为第一组 1、2、3 和下一组 1、2、3 提供每组的 seq 序列号。
我该如何为这个查询编写它?
select tour_no, version_no ,itinerary_detail_no
from itinerary_detail
group by tour_no, version_no, itinerary_detail_no
order by count(*) desc
解决方案
您可以为每一行生成一个序列号,如下所示:
select
tour_no, version_no, itinerary_detail_no,
row_number()
over(order by cnt desc, tour_no, version_no, itinerary_detail_no) as rn
from (
select tour_no, version_no, itinerary_detail_no, count(*) as cnt
from itinerary_detail
group by tour_no, version_no, itinerary_detail_no
) x
order by cnt desc, tour_no, version_no, itinerary_detail_no
结果:
TOUR_NO VERSION_NO ITINERARY_DETAIL_NO RN
------- ---------- ------------------- --
1 17 5 1
1 10 5 2
2 10 5 3
3 10 5 4
作为参考,这个测试的数据脚本是:
create table itinerary_detail (
tour_no number(6),
version_no number(6),
itinerary_detail_no number(6)
);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (1, 10, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (1, 10, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (1, 17, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (1, 17, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (1, 17, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (2, 10, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (3, 10, 5);
**Tour_No Ver_No IT_No Seq_No JAA0000197 01 17037249 1 JAA0000197 01 17037250 2 JAA0000197 02 17037249 1 JAA0000197 02 17037250 2 JAA0000197 02 170372
这里 group by 是 (Tour_No,ver_No) 所以上面的数据我希望每个组都从 1 到 2 开始,然后继续,下一组再次相同
推荐阅读
- c# - 添加/更改新内容后如何保存 JSON 文件
- llvm - 当clang运行链接器时,如何获得clang的路径?
- php - 动态生成的网页可以被机器人抓取和抓取吗?
- python - 从字符串转换为日期时间时如何修复 ValueError 时间日期与格式不匹配
- ansible - 将自定义 Var 传递给 Audit 中的脚本
- python - Google Assistant API 停止响应“Ok google”。卡在 MEDIA_STATE_IDLE
- angular - 如何让表单输入符合类?
- r - 如何计算平均年份
- php - PHP 7.3.1 Laravel SQLSRV 未能播种数据库
- c# - 奇怪的异常创建新的 XmlSerializer