中易网

oracle查询最小值所在行数据

答案:2  悬赏:20  
解决时间 2021-04-27 11:02
  • 提问者网友:江山如画
  • 2021-04-26 15:58
SQL> select tablea.车牌, tablea.数值, tablea.序号, tableb.数值, tableb.序号, min(tablea.数值-tableb.数值)as T from tablea, tableb where tablea.车牌=tableb.车牌 and tablea.序号=1 and tableb.序号=1 and tablea.数值-tableb.数值>0 group by tablea.车牌, tablea.数值, tablea.序号, tableb.数值, tableb.序号;

a、700对应的只需要T最小的一列,即1所在的列
我的处理办法1:
SQL> select tablea.车牌, tablea.数值, tablea.序号, min(tablea.数值-tableb.数值)as T from tablea, tableb where tablea.车牌=tableb.车牌 and tablea.序号=1 and tableb.序号=1 and tablea.数值-tableb.数值>0 group by tablea.车牌, tablea.数值, tablea.序号;

这样子就不无法得到另外两列数据,除非另外插入。
办法2:
SQL> select tablea.车牌, tablea.数值, tablea.序号, tableb.数值, tableb.序号, min(tablea.数值-tableb.数值) over (partition by tablea.车牌,tablea.数值) from tablea, tableb where tablea.车牌=tableb.车牌 and tablea.序号=1 and tableb.序号=1 and tablea.数值-tableb.数值>0;

这样的话,不知道怎么只显示对的那一行。

前面说的太复杂了,其实就是子查询时遇到问题。从下图第一个结果中查询,条件是m=1,不要建临时表、视图的方法,应该怎么处理,写了几句都不对。不知道为什么












最佳答案
  • 二级知识专家网友:猎杀温柔
  • 2021-04-26 16:32
对这类没悬赏又长的题不太喜欢回答,不过为了采纳率,还是告诉你办法吧。
把你写的东西看成是一个table,再连接要获取字段的对应table就可以了,是不 是很简单?
select * from (
select tablea.车牌, tablea.数值, tablea.序号, min(tablea.数值-tableb.数值)as T from tablea, tableb where tablea.车牌=tableb.车牌 and tablea.序号=1 and tableb.序号=1 and tablea.数值-tableb.数值>0 group by tablea.车牌, tablea.数值, tablea.序号) AS A , tablea AS B, tableb AS C
where A车牌=B.车牌 and A.车牌=C.车牌
AND A.序号=B.序号 AND........他们之间的关系,自己会写吧?
全部回答
  • 1楼网友:许你一世温柔
  • 2021-04-26 17:10
select max(case when d.cnt = d.max_cnt then d.crown else null end) as max_crown,d.max_cnt, max(case when d.cnt = d.min_cnt then d.crown else null end) as min_crown, d.min_cnt from ( select s.crown, s.cnt, max(s.cnt) over () as max_cnt, min(s.cnt) over () as min_cnt from ( select s0.crown, count(s0.year) as cnt from history s0 group by s0.crown ) s ) d group by d.max_cnt, d.min_cnt; 结果中, max_crown为夺冠最多的球队名称, max_cnt为球队最多的夺冠次数; min__crown为夺冠最少的球队名称, min_cnt为球队最少夺冠次数.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息