WITH分析函式

2022-09-16 12:48:12 字數 1455 閱讀 5068

create table test_1

(x number(10),

y number(10)

);insert into test_1 values (1,110);

insert into test_1 values (2,120);

insert into test_1 values (2,80);

insert into test_1 values (3,150);

insert into test_1 values (3,30);

insert into test_1 values (3,60);

commit;

select * from test_1;

x          y

---------- ----------

1        110

2        120

2         80

3        150

3         30

3         60

6 rows selected.

需求描述

按照x列分組後統計y列的總值,是選出比y列總值的三分之一大的那些分組統計資訊。

1、使用子查詢方式實現

select x, sum(y) as total_y

from test_1

group by x

h**ing sum(y) > (select sum(y) / 3 from test_1)

order by total_y;

x    total_y

---------- ----------

2        200

3        240

2、with clause方法閃亮登場

with secooler_sum as (select x, sum (y) total_y

from test_1

group by x)

select x, total_y

from secooler_sum

where total_y > (select sum (total_y) / 3 from secooler_sum)

order by total_y;

x    total_y

---------- ----------

2        200

3        240

這裡的查詢語句不是以select開始的,而是以"with"關鍵字開頭。

可以認為oracle在真正進行查詢之前預先構造了乙個臨時表secooler_sum,

之後我們便可多次使用它做進一步的分析和處理。

with clause方法的優點

總結:1、增加了sql的易讀性,如果構造了多個子查詢,結構會更清晰;

2、"一次分析,多次使用",提供效能,達到了"少讀"的目標。

oracle 分析函式 排序值分析函式

一 問題描述 查詢列表時,我們有時需要對查詢結果依據某個字段進行排名。如果每條記錄在排序欄位上都不相同,我們可以將原查詢作為乙個檢視,查詢其rownum,便可以實現簡單排序,例如 但是,很多時候我們想用來排序的字段都是有重複值的,此時可能需要將值相同的記錄名詞並列,那麼我們就需要用到oracle的分...

分析函式hive計算均值 Hive 分析函式

應用場景 1 用於分割槽排序 2 top n 3 層次查詢 常用分析函式 分析函式 描述 rank 返回資料項在分割槽中的排名。排名值序列可能會有間隔 dense rank 返回資料項在分割槽中的排名。排名值序列是連續的,沒有間隔 percent rank 計算當前行的百分比排名 x 1 視窗分割槽...

oracle分析函式

oracle分析函式 sql plus環境 1 group by子句 create test table and insert test data.create table students id number 15,0 area varchar2 10 stu type varchar2 2 sc...