mysql,不能分组而不破坏我的原始代码(内联视图)


select ename as Name, sal as Salary, sal/sum(sal)*100 from stud_v22_lykkeboeale.emp 

我有这个代码,但当我按sal分组时,它会从以下代码转换过来:

| Name | Salary | sal/sum(sal)*100 |
|------+--------+------------------|
|Smith |  800   |2.756244616709733 |

对此:

|Name   |salary | sal/sum(sal)*100|
|Smith  |800    |100|
|James  |950    |100|
|Adams  |1100   |100|
|Ward   |1250   |50 |
|Miller |1300   |100|
|Turner |1500   |100|
|Allen  |1600   |100|
|Clark  |2450   |100|
|Blake  |2850   |100|
|Jones  |2975   |100|
|Scott  |3000   |50 |
|King   |5000   |100|

它应该输出如下:

|Name  |    Salary |    sal/tot_sal*100    |
|------|-----------|-----------------------|
|Smith |    800    |    2.756244616709733  |
|James |    950    |    3.273040482342808  |
|Adams |    1100   |    3.7898363479758825 |
|Ward  |    1250   |    4.3066322136089585 |
|Martin|    1250   |    4.3066322136089585 |
|Miller|    1300   |    4.478897502153316  |
|Turner|    1500   |    5.167958656330749  |
|Allen |    1600   |    5.512489233419466  |
|Clark |    2450   |    8.440999138673558  |
|Blake |    2850   |    9.819121447028424  |
|Jones |    2975   |    10.249784668389319 |
|Ford  |    3000   |    10.335917312661499 |
|Scott |    3000   |    10.335917312661499 |
|King  |    5000   |    17.226528854435834 |

sal/tot_sal*100是个人工资与工资总额相比的百分比。在我的作业中,它说我应该使用内联视图,但我不知道那是什么,我已经搜索过了,但还没有找到任何";真实的";答案是什么。

所以,如果有人能帮助我,我将不胜感激。

使用窗口SUM((,而不是聚合一个:

SELECT Name, Salary, 100 * Salary / SUM(Salary) OVER () percent
FROM test
ORDER BY Salary, Name

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=99f39cbd06734643a64578aaccd36533

相关内容

最新更新