SQL:根据另一个查询的值顺序对查询结果进行排序
SQL: Sort Results of a Query Based on the Order of values from another Query
假设我有一个包含 3 列的 table:
- 年
- 公司
- 部门
- 销售额
我想显示以下内容:
- 公司
- 部门
- 总和(销售额)
额外的要求是具有最大销售额的公司(跨所有部门)首先显示,其余结果相应排序。
我将如何编写查询?
我试过以下方法,但没有用:
SELECT t1.company,
cs1.deparment,
SUM(cs1.sales)
FROM company_sales cs1,
(SELECT cs2.company,
SUM(cs2.sales)
FROM company_sales cs2
WHERE cs2.company IS NOT NULL
GROUP BY cs2.company
ORDER BY 2 DESC) t1
WHERE cs1.company = t1.company
GROUP BY t1.company,
cs1.deparment;
尝试:
SELECT company,department,sum(sales)
FROM table GROUP BY company,department
ORDER BY Max(sales)
您可以使用 window 函数执行此操作:
select company, department, sum(sales)
from t
group by company, department
order by sum(sum(sales)) over (partition by company) desc, company;
您还可以在 select
子句中包含表达式以查看整个公司的销售额总和。
假设我有一个包含 3 列的 table:
- 年
- 公司
- 部门
- 销售额
我想显示以下内容:
- 公司
- 部门
- 总和(销售额)
额外的要求是具有最大销售额的公司(跨所有部门)首先显示,其余结果相应排序。
我将如何编写查询?
我试过以下方法,但没有用:
SELECT t1.company,
cs1.deparment,
SUM(cs1.sales)
FROM company_sales cs1,
(SELECT cs2.company,
SUM(cs2.sales)
FROM company_sales cs2
WHERE cs2.company IS NOT NULL
GROUP BY cs2.company
ORDER BY 2 DESC) t1
WHERE cs1.company = t1.company
GROUP BY t1.company,
cs1.deparment;
尝试:
SELECT company,department,sum(sales)
FROM table GROUP BY company,department
ORDER BY Max(sales)
您可以使用 window 函数执行此操作:
select company, department, sum(sales)
from t
group by company, department
order by sum(sum(sales)) over (partition by company) desc, company;
您还可以在 select
子句中包含表达式以查看整个公司的销售额总和。