視窗函式和group by 一起使用的案例

2022-10-11 14:57:09 字數 2583 閱讀 3560

insert into px_data_test_temp.temp_stu_attendance_tb  

(date_col, stu_no, is_attendence)

values

('2019-11-01','stu-00001','上課'),

('2019-11-02','stu-00001','上課'),

('2019-11-03','stu-00001','缺勤'),

('2019-11-04','stu-00001','上課'),

('2019-11-05','stu-00001','上課'),

('2019-11-06','stu-00001','上課'),

('2019-11-07','stu-00001','上課'),

('2019-11-08','stu-00001','上課'),

('2019-11-09','stu-00001','缺勤'),

('2019-11-10','stu-00001','缺勤'),

('2019-11-11','stu-00001','上課'),

('2019-11-12','stu-00001','上課'),

('2019-11-13','stu-00001','上課'),

('2019-11-14','stu-00001','上課'),

('2019-11-15','stu-00001','缺勤'),

('2019-11-16','stu-00001','缺勤'),

('2019-11-17','stu-00001','缺勤'),

('2019-11-18','stu-00001','上課'),

('2019-11-19','stu-00001','上課'),

('2019-11-20','stu-00001','上課'),

('2019-11-01','stu-00002','上課'),

('2019-11-02','stu-00002','缺勤'),

('2019-11-03','stu-00002','缺勤'),

('2019-11-04','stu-00002','上課'),

('2019-11-05','stu-00002','上課'),

('2019-11-06','stu-00002','上課'),

('2019-11-07','stu-00002','上課'),

('2019-11-08','stu-00002','上課'),

('2019-11-09','stu-00002','缺勤'),

('2019-11-10','stu-00002','缺勤'),

('2019-11-11','stu-00002','上課'),

('2019-11-12','stu-00002','上課'),

('2019-11-13','stu-00002','上課'),

('2019-11-14','stu-00002','上課'),

('2019-11-15','stu-00002','上課'),

('2019-11-16','stu-00002','缺勤'),

('2019-11-17','stu-00002','缺勤'),

('2019-11-18','stu-00002','上課'),

('2019-11-19','stu-00002','上課'),

('2019-11-20','stu-00002','上課');

select 

date_col,

count(*) as total,

row_number() over (order by date_col) as rn

from temp_stu_attendance_tb

where is_attendence = '上課'

group by date_col;

date_col    total   rn 

2019-11-01 2 1

2019-11-02 1 2

2019-11-04 2 3

2019-11-05 2 4

2019-11-06 2 5

2019-11-07 2 6

2019-11-08 2 7

2019-11-11 2 8

2019-11-12 2 9

2019-11-13 2 10

2019-11-14 2 11

2019-11-15 1 12

2019-11-18 2 13

2019-11-19 2 14

2019-11-20 2 15

1、視窗函式是寫在select子句中的,而視窗函式開窗範圍是基於後面的所有查詢結果。對每行結果進行開窗操作,然後每行都在這個視窗範圍內執行聚合函式進行統計。統計結果作為這一行的乙個字段值。所以本案例中,先group by 之後再rank()

2、視窗函式與group by一起使用並不衝突。視窗函式也是基於整個group by後的查詢結果(而不是基於每組組內的查詢結果)。

關於group by 和max函式一起使用的坑

前幾天去參加一場面試,面試過程中有被問到乙個sql語句的問題,很遺憾沒有回答上來,結果一面直接掛 問完這個問題後,當我聽到面試官對我說 你有什麼想問我的嗎?我的內心一片涼涼 其實面試官問的問題聽起來很簡單,一張劇目演出表,表中有 劇目id,劇目名稱,演出單位,票房 問 查詢出每個演出單位票房最高的劇...

願使 陪你一起老

有人說,人生的路上,最浪漫的事,一種是相濡以沫,一種是相忘於江湖。相守 相伴都是幸福與甜蜜的。找乙個愛的人,相守一生,看歲月輪迴,青絲白髮,一起到老。但有一種相守,並沒有牽手的相依偎,只是隔著一段紅塵的距離,默默地凝望 默默地祝福。陪你一起老,無論是否相守,我願在時光的清淺裡,將往事收藏,只要你好,...

函式模板和函式引數在一起

include using namespace std 函式模板不允許自動型別轉換 普通函式能夠進行自動型別轉換 1 函式模板可以像普通函式一樣被過載 2 函式模板和普通函式的型別都相同時候,c 編譯器會優先考慮呼叫普通函式 3 如果函式模板可以產生乙個更好的匹配,那麼選擇模板 4 z int ma...