sql over(partition by) 開窗函數的使用


patition by  在group by分組匯總的前提下,再匯總一次

1、patition by 1   匯總所有數據

 1 select * from stu 

1 select
2 class,
3 sum(score) 班級總分,
4 sum(sum(score)) over(partition by 1) 年級總分,
5 cast(cast(sum(score)*100/nullif(sum(sum(score)) over(partition by 1),0) as numeric(18,2)) as varchar(50))+'%' as 班級總分占比
6 from stu
7 group by class

 

2、patition by 字段   根據該字段匯總

 1 select * from stu 

 

1 select
2 class,
3 name,
4 sum(score) 個人總分,
5 sum(sum(score)) over(partition by name) 個人總分,
6 sum(sum(score)) over(partition by class) 班級總分,
7 sum(sum(score)) over(partition by 1) 年級總分
8 from stu
9 group by class,name

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM