oracle複雜查詢是sql

來源:互聯網
上載者:User

標籤:strong   --   type   over   複雜   連續   order   sel   必須   

一、over()分析函數

  分組查前幾條:select * from test t where (select count(*) from test a where t.type=a.type and t.scope>a.scope)<2;

  --rank()/dense_rank() over(partition by ...order by ...)
  select * from(select t.*,rank() over(partition by t.type order by t.scope ) a from TEST t) a  where a.a<3

--dense_rank()分級 連續排序
select t.*,dense_rank() over(partition by t.type order by t.scope)a from test t
--rank()分級 跳躍排序
select t.*,rank() over(partition by t.type order by t.scope)a from test t

select * from Test t where 2>(select count(*) from Test a where t.type=a.type and t.scope>a.scope)
select t.* from Test t,(select a.type,max(a.scope) scope from TEST a group by a.type) d  where t.type=d.type and t.scope=d.scope

--笛卡爾乘積
select * from Test t,Test a
select t.* from Test t,(select a.type,max(a.scope) maxscope,min(a.scope) minscope from TEST a group by a.type) d  where t.type=d.type and t.scope=d.scope


  --
select t.*,d.maxscope-t.scope maxscope,t.scope-d.minscope minscope
  from Test t,
       (select a.type, max(a.scope) maxscope, min(a.scope) minscope
          from TEST a
         group by a.type) d
 where t.type = d.type

--min()/max() over(partition by ...)
select t.*,
       nvl(max(t.scope) over(partition by t.type), 0) - t.scope maxscope,
       t.scope - nvl(min(t.scope) over(partition by t.type), 0) minscope
  from test t

--lead()/lag() over(partition by ... order by ...)  
select t.*,lead(t.scope,1,0)over(partition by t.type order by t.scope) a--同組後一個
       from test t
select t.*,lag(t.scope,1,0)over(partition by t.type order by t.scope) a--同組前一個
       from test t

 



select t.*,
       first_value(t.scope) over(partition by t.type) first_sal,
       last_value(t.scope) over(partition by t.type) last_sal,
       sum(t.scope) over(partition by t.type) sum_sal,
       avg(t.scope) over(partition by t.type) avg_sal,
       count(t.scope) over(partition by t.type) count_num,
       row_number() over(partition by t.type order by t.scope) row_num
  from test t

 


--註:帶order by子句的方法說明在使用該方法的時候必須要帶order by


 

oracle複雜查詢是sql

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.