分组和排序问题?????

chenranlw 2006-11-03 11:16:53
表T1

序号 字段1 字段2 字段3
1 a1 c 2.3
2 aa c 1.2
3 ba b 4.2
4 b1 b 5.8
5 ac c 0.1
6 ae c 4.5

如果想按字段2分组统计字段3的合计,然后再按序号的前后顺序来排,应该怎么写呢!~

结果希望是这样:
字段1 字段2 字段3
a1 c 2.3
aa c 1.2
ac c 0.1
ae c 4.5
c 8.1
ba b 4.2
b1 b 5.8
b 10
...全文
159 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
komushi 2006-11-03
  • 打赏
  • 举报
回复

select
column1,column2,column3
from
(
select min(id) as seq,
null as column1,
column2,
sum(column3) as column3
from t1
group by column2

union all

select min(id) over(partition by column2 order by id) as seq,
column1,
column2,
column3
from t1
) result1
order by seq,column2,column1 nulls last
komushi 2006-11-03
  • 打赏
  • 举报
回复
licsth,不好意思 我怎么做下来结果是对的呢。 我没太看懂你写的,不过楼主明白就行了。
n_n
chenranlw 2006-11-03
  • 打赏
  • 举报
回复
谢谢,谢谢你们!~``
小李木耳 2006-11-03
  • 打赏
  • 举报
回复
借鉴‘小虫’!
小李木耳 2006-11-03
  • 打赏
  • 举报
回复
小虫,高杆。
1、按照‘字段2’分组,用最小的‘序号’作为整组的‘序号’;
2、按照‘字段2’分组,统计字段3的合计,同时取出组的最小‘序号’,外加造一个空值。

有一小点好像失误,order by之后的结果:
序号 字段1 字段2 字段3
4 b1 b 5.8
3 ba b 4.2
b 10
1 a1 c 2.3
2 aa c 1.2
5 ac c 0.1
6 ae c 4.5
c 8.1
与楼主要求的好像有点不符!

应该是下面的结果才对吧?!
序号 字段1 字段2 字段3
1 a1 c 2.3
2 aa c 1.2
5 ac c 0.1
6 ae c 4.5
c 8.1
3 ba b 4.2
4 b1 b 5.8
b 10
----------------------------1
我认为应该在内核sql中巴把‘序号’字段也取出来!order by的时候,只需要order by seq,id就可以了。


----------------------------2
select
column1,column2,column3
from
(
select null as 序号, --追加
min(id) as seq,
null as column1,
column2,
sum(column3) as column3
from t1
group by column2

union all

select 序号, --追加
min(id) over(partition by column2 order by id) as seq,
column1,
column2,
column3
from t1
) result1
order by seq,序号 --变更

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧