emp_id | dep_name | salary |
---|---|---|
7 | develop | 4200 |
8 | develop | 6000 |
9 | develop | 4500 |
10 | develop | 5200 |
11 | develop | 5200 |
2 | personnel | 3900 |
5 | personnel | 3500 |
1 | sales | 5000 |
3 | sales | 4800 |
4 | sales | 4800 |
如果要將每位員工與其部門的平均工資進(jìn)行對(duì)比, 需要這樣的結(jié)果:
emp_id | dep_name | salary | avg |
---|---|---|---|
7 | develop | 4200 | 5020 |
8 | develop | 6000 | 5020 |
9 | develop | 4500 | 5020 |
10 | develop | 5200 | 5020 |
11 | develop | 5200 | 5020 |
2 | personnel | 3900 | 3700 |
5 | personnel | 3500 | 3700 |
1 | sales | 5000 | 4866.66666666667 |
3 | sales | 4800 | 4866.66666666667 |
4 | sales | 4800 | 4866.66666666667 |
如果不用窗口函數(shù)來查詢, 則比較復(fù)雜, 當(dāng)然也能做到, 語句如下:
SELECT e0.emp_no, e0.dep_name, e0.salary, e2.avg_salary FROM public.emp_salary e0 join ( select e1.dep_name, avg(e1.salary) as avg_salary from public.emp_salary e1 group by e1.dep_name ) e2 on e2.dep_name = e0.dep_name order by e0.dep_name, e0.emp_no;
如果使用窗口函數(shù)進(jìn)行查詢, 則很容易做到, sql 語句如下:
SELECT emp_no, dep_name, salary, avg(salary) over(partition by dep_name) FROM public.emp_salary order by dep_name, emp_no;
但是如果要查詢隨著員工的增加, 各部門平均工資的變化, 如下表所示的結(jié)果, 不用窗口函數(shù)查詢的話就很難做到了。
emp_id | dep_name | salary | avg |
---|---|---|---|
7 | develop | 4200 | 4200 |
8 | develop | 6000 | 5100 |
9 | develop | 4500 | 4900 |
10 | develop | 5200 | 4975 |
11 | develop | 5200 | 5020 |
2 | personnel | 3900 | 3900 |
5 | personnel | 3500 | 3700 |
1 | sales | 5000 | 5000 |
3 | sales | 4800 | 4900 |
4 | sales | 4800 | 4866.66666666667 |
如果使用窗口函數(shù), 依然可以輕松完成, 語句如下:
SELECT emp_no, dep_name, salary, avg(salary) over(partition by dep_name order by emp_no) FROM public.emp_salary order by dep_name, emp_no;
可見, 窗口函數(shù)在需要對(duì)查詢結(jié)果中的相關(guān)行進(jìn)行計(jì)算時(shí)有很大的優(yōu)勢(shì)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
標(biāo)簽:株洲 衡陽 錦州 蚌埠 珠海 晉城 烏海 來賓
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PostgreSQL數(shù)據(jù)庫中窗口函數(shù)的語法與使用》,本文關(guān)鍵詞 PostgreSQL,數(shù)據(jù)庫,中,窗口,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。