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 子句中包含表达式以查看整个公司的销售额总和。