select avg_s.jobs, round(avg_s.avg,3) from (select distinct(job) jobs, avg(score) over(partition by job) avg from grade order by avg desc) as avg_s
首先,是关于窗口函数,
框架是:函数()over (),前面函数是计算方式,后面over是聚合方式,所以。函数可以自己换的,这里是要求平均数,所以我就换成avg(score),后面是根据科目聚合,所以我用over(partition by job),计算每个科目的平均分就是avg(score) over(partition by job) avg
,然后发现用job是把8个科目都取出来了,没有去重,所以对job用distinct去重复,最终再按照avg排降序,但是如何对数字精确到需要的位置数?用round函数
SELECT ROUND(your_column, 3) FROM your_table; #表示将某一列,设置到小数点后3位