求按照城市分布的平均薪资和总薪资并按照城市内的总薪资倒叙排序只取每个城市总薪资的top1hive语法
时间: 2023-07-14 14:14:10 浏览: 68
假设你的数据表名为`salary`,包含以下字段:`city`(城市名称),`salary`(薪资)。
首先,我们可以使用以下语句计算每个城市的平均薪资和总薪资:
```
SELECT
city,
AVG(salary) AS avg_salary,
SUM(salary) AS total_salary
FROM
salary
GROUP BY
city
```
接下来,我们可以将上述语句作为子查询,并使用`ORDER BY`和`LIMIT`语句按照城市内的总薪资倒序排序并取每个城市总薪资的top1,如下所示:
```
SELECT
city,
total_salary
FROM
(
SELECT
city,
SUM(salary) AS total_salary
FROM
salary
GROUP BY
city
) t
ORDER BY
total_salary DESC
LIMIT
1
```
这样就能够得到每个城市的总薪资排名第一的结果。注意,这里只取了每个城市的总薪资,并没有计算平均薪资。如果需要同时考虑平均薪资和总薪资,可以将上述两个查询合并起来,但是需要注意在`ORDER BY`语句中如何排序。
相关问题
求按照城市分布的平均薪资和总薪资,并按照城市内的总薪资倒序排序,只取每个城市总薪资的top1。hive语法
假设有一个包含城市和薪资的表格,表格名为salary,城市列名为city,薪资列名为salary_amount,则可以使用以下Hive SQL语句实现按照城市分布的平均薪资和总薪资,并按照城市内的总薪资倒序排序,只取每个城市总薪资的top1:
```
SELECT city, SUM(salary_amount) AS total_salary, AVG(salary_amount) AS avg_salary
FROM salary
GROUP BY city
ORDER BY total_salary DESC
LIMIT 1;
```
该查询首先按照城市列对表格进行分组,计算每个城市的总薪资和平均薪资,并按照总薪资倒序排序。然后通过 LIMIT 1 只取每个城市的 top1,即每个城市总薪资最高的那一行。
求按照城市分布的平均薪资和总薪资并按照城市内的总薪资倒叙排序只取每个城市总薪资的top1,城市和薪资分别为两个表,hive语法
假设城市表名为 city,包含字段为 city_name,薪资表名为 salary,包含字段为 city_name 和 salary。
按照城市分布的平均薪资和总薪资:
```sql
SELECT
city_name,
AVG(salary) AS avg_salary,
SUM(salary) AS total_salary
FROM
salary
GROUP BY
city_name;
```
按照城市内的总薪资倒序排序,只取每个城市总薪资的 top1:
```sql
SELECT
city_name,
SUM(salary) AS total_salary
FROM
salary
GROUP BY
city_name
ORDER BY
total_salary DESC
LIMIT
1;
```
将两个 SQL 语句结合起来,得到如下的 SQL 语句:
```sql
SELECT
c.city_name,
AVG(s.salary) AS avg_salary,
SUM(s.salary) AS total_salary
FROM
salary s
JOIN
city c
ON
s.city_name = c.city_name
GROUP BY
c.city_name
ORDER BY
SUM(s.salary) DESC
LIMIT
1;
```
这个 SQL 语句的含义是:先将城市表和薪资表连接起来,然后按照城市分组,计算每个城市的平均薪资和总薪资,最后按照总薪资倒序排序,只取排序后的第一个结果。