我有一个问题
Select age,qualification,sum(income) as total_income from employee
group by age,qualification;我想要找到基于total_income的年龄和资质组的排名。
例如
19|Grad|5000|rank:1
19|Grad|4000|rank:2
19|Grad|3000|rank:3
26|Grad|6000|rank:1
26|Grad|5000|rank:2
26|PosG|8000|rank:1
26|PosG|6000|rank:2我可以在Oracle中执行此操作吗?我试着使用partition by,但没能弄清楚。
发布于 2015-07-23 17:23:35
SQL Fiddle
Oracle 11g R2架构设置
CREATE TABLE Employees ( Age, Qualification, Income ) AS
SELECT 19, 'Grad', 5000 FROM DUAL
UNION ALL SELECT 19, 'Grad', 4000 FROM DUAL
UNION ALL SELECT 19, 'Grad', 3000 FROM DUAL
UNION ALL SELECT 26, 'Grad', 6000 FROM DUAL
UNION ALL SELECT 26, 'Grad', 5000 FROM DUAL
UNION ALL SELECT 26, 'PosG', 8000 FROM DUAL
UNION ALL SELECT 26, 'PosG', 6000 FROM DUAL;查询1
SELECT Age,
Qualification,
Income,
RANK() OVER ( PARTITION BY Age, Qualification ORDER BY Income DESC ) AS "Rank"
FROM Employees| AGE | QUALIFICATION | INCOME | Rank |
|-----|---------------|--------|------|
| 19 | Grad | 5000 | 1 |
| 19 | Grad | 4000 | 2 |
| 19 | Grad | 3000 | 3 |
| 26 | Grad | 6000 | 1 |
| 26 | Grad | 5000 | 2 |
| 26 | PosG | 8000 | 1 |
| 26 | PosG | 6000 | 2 |查询2
WITH total_incomes AS (
SELECT Age,
Qualification,
SUM( Income ) AS total_income
FROM Employees
GROUP BY
Age,
Qualification
)
SELECT Age,
Qualification,
total_income,
RANK() OVER ( ORDER BY total_income DESC ) AS "Rank"
FROM total_incomes| AGE | QUALIFICATION | TOTAL_INCOME | Rank |
|-----|---------------|--------------|------|
| 26 | PosG | 14000 | 1 |
| 19 | Grad | 12000 | 2 |
| 26 | Grad | 11000 | 3 |发布于 2015-07-23 17:26:02
select age,qualification,total_income
row_number() over (partition by age,qualification order by income desc) as rank from
(
Select age,qualification,sum(income) as total_income from employee
group by age,qualification
) T1发布于 2020-11-13 03:09:34
Select
Age,
Qualification,
sum(income) as totalIncome,
dense_rank () over (order by
sum(income) desc) as DRnk from exam_RG
group by age,Qualification
Age Qualification totalIncome DRnk
26 Grad 21000 1
19 Grad 12000 2https://stackoverflow.com/questions/31582773
复制相似问题