日期:2014-05-17  浏览次数:20926 次

求sql:得到的是每天a字段最大值和最大值的id、最小值值和最小值的id
有一个这样的表

字段 id a sj
  1 15 2009-11-01
  3 10 2009-11-01
  22 13 2009-11-03
  4 20 2009-11-01
  44 20 2009-11-02
  5 20 2009-11-03


求sql:得到的是每天a字段最大值和最大值的id、最小值值和最小值的id

------解决方案--------------------
select max(a),min(a),max(id),min(id) from t group by sj;

分太多了。
------解决方案--------------------
探讨
select max(a),min(a),max(id),min(id) from t group by sj;

分太多了。

------解决方案--------------------
好像有点不一样,要用分析函数来做
SQL code
select *
from 
(
select t.*,row_number() over(partition by sj order by a desc ) max_rn,row_number() over(partition by sj order by a  ) min_rn from t  
)
where max_rn=1 or min_rn=1

------解决方案--------------------
探讨
是这样吗?

------解决方案--------------------
理解错误,

#4是正确的。