SQL GROUP问题

1by1 2003-07-29 12:15:53
有相同表T1,T2。字段都是A,B,C,D
可否用一句SELECT得到以下查询结果

以A为GROUP 最大B, 最小的C所对应的D。
...全文
33 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
1by1 2003-08-06
  • 打赏
  • 举报
回复
谢谢各位,结贴给分
1by1 2003-08-04
  • 打赏
  • 举报
回复
谢谢各位启发,
写出来了。
select ta.a, ta.b, tb.c, tb.d from (select a, max(b) b from t1 group by a) ta,
(select a,c,d from t1 where c in (select min(c) from t1 group by a) ) tb where ta.a = tb.a;

这样考虑:
把以A为GROUP 得到最大的B 看作一个表
把以A为GROUP 最小的C所对应的D 看作第二个表
两个表以A为关联
suleen 2003-08-04
  • 打赏
  • 举报
回复
挂月:有个小错误,应该是这样:
select ta.a,ta.b,tb.d from t1 ta join t1 tb on ta.a = tb.b
where ta.b = (select max(tc.b) from t1 tc where tc.a = ta.a group by tc.a)
and tb.c = (select min(td.c) from t1 td where td.a = tb.a group by td.a)
nyfor 2003-08-04
  • 打赏
  • 举报
回复
select a,b,d from
(
select a,
max(b) over (partition by a) b,
d,
row_number() over (partition by a order by c) rn
from t1
)
where rn = 1;
bluemeteor 2003-08-01
  • 打赏
  • 举报
回复
这个问题看着简单,其实非常的麻烦,比较公认的方法是通过 交叉表来解决

楼主试试这个:
select TA.a,TA.b,TB.d from t1 TA join t1 TB on TA.a=TB.a
where
TA.b=(SELECT MAX(TC.b) FROM t1 TC WHERE TC.a=TA.a group by TC.a )
and
TB.c=(SELECT Min(TD.c) FROM t1 TD WHERE TC.a=TB.a group by TC.a )

楼主的字段名用的是abcd所以上面的语句读起来很难....hope that helps
l2g32003 2003-08-01
  • 打赏
  • 举报
回复
我想应该不可以吧
如果你的表的第2行 c 改为 4 那结果 最小的C所对应的纪录中的D 不是就3条记录了
1by1 2003-08-01
  • 打赏
  • 举报
回复
对不起。修正一下。
希望查询结果是:
A B D
2 4 5
1 3 5

1by1 2003-08-01
  • 打赏
  • 举报
回复
提问不清楚吗?
我再解释一下。
T1,T2是两个相同的表。只要单个表查出来后UNION一下就可以了。

最大的B是对GROUP A来说的。

最小的C也是对GROUP A 来说的。
D是该条(最小的C)所对应的纪录中的D,与B无关。

比如数据
A B C D
2 3 4 5
2 4 5 3
1 3 4 5
1 2 9 7
希望查询结果是:
A B D
2 4 5
1 2 5

上面两位SQL都不成功
谢谢各位捧场。
snowy_howe 2003-07-31
  • 打赏
  • 举报
回复
首先你的问题是可以解决的,但是如果问题不清楚的话,别人无法帮你。
最好能举个例子来说明你的想法。
jinus 2003-07-31
  • 打赏
  • 举报
回复
select max(X.b) B,V.d D from X,(select min(c) C from X group by a) V
where c = V.C
group by X.a
这样可合意?
kitewgd 2003-07-31
  • 打赏
  • 举报
回复
是不是
Select a,max(b),d from (select a,min(c),b,d from (select * from t1 union select * from t2)) group by a,d
beckhambobo 2003-07-31
  • 打赏
  • 举报
回复
提出问题本身已是一个问题,让人无法理解!
suleen 2003-07-31
  • 打赏
  • 举报
回复
有些不清楚,最大的B与最小的C可能对应两个D,除非这样:最大的B中最小的C对应的D.
1by1 2003-07-30
  • 打赏
  • 举报
回复
没有人回答吗?
到底行不行?
问题好像还是能有混淆。

可否用一句SELECT得到以下查询结果:
以A为GROUP
查询最小的C所对应的D
以及最大的B
ATCG 2003-07-30
  • 打赏
  • 举报
回复
问题阐述不够清楚
1、是否两张表连接查询?
2、以A为GROUP 还可以理解
3、“查询最小的C所对应的D,”是哪张表地C对应哪张表的D
4、“以及最大的B”什么意思?是C同时对应D和最大的B还是 B又对应什么东东的?
1by1 2003-07-30
  • 打赏
  • 举报
回复
这个问题到底有没有解?

无解也是一种解嘛。
看到这个帖子的,想不出答案也发发言吧。不要让我这帖子以为没人看。

如果确定是无解的话,发言也得分。
1by1 2003-07-29
  • 打赏
  • 举报
回复
抱歉,我没讲清楚
B,不是条件,是查询内容。

可否用一句SELECT得到以下查询结果:
以A为GROUP 最小的C所对应的D,以及最大的B
yuaiwu 2003-07-29
  • 打赏
  • 举报
回复
select d from t2
where(b,c in(
select max(b) b,min(c) c from t2 group by a)
)

17,089

社区成员

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

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