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...