按总和排序,而不像行一样分组

Order By Sums, while not grouping like rows

假设我有这样的数据作为查询结果

SKU   |  STOCK  |  SNACK  |  FLAVOR 
1234       45       Chips     BBQ
1236       87       Chips     BBQ
2345       12       Pretzel   Bacon
3456       51       Chips     Ranch
4567       32       Pretzel   Classic
5678      142       Candy     Chocolate
...       ...       ...       ...

是否可以在 ORDER BY 行中包含 SQL 以显示上述数据,这些数据首先按具有最大 SUM(Stock) 然后按 Stock DESC 而不合并任何条目?我简单地尝试使用类似于

的行
 ORDER BY 
 SUM(Snack) DESC,
 SUM(Flavor) DESC,
 Stock DESC 

但无法确定 GROUP BY 语句的布局方式。

尝试以下SQL

select sku, stock, data.snack, flavor, summ = summ.summ  
from data
join (select snack, summ = sum(stock) from data group by snack) as summ
on summ.snack = data.snack
order by summ desc, stock desc

SKU|STOCK|SNACK|FLAVOR|SUMM
1236 87 Chips BBQ 183 
3456 51 Chips Ranch 183 
1234 45 Chips BBQ 183 
5678 142 Candy Chocolate 142 
4567 32 Pretzel Classic 44 
2345 12 Pretzel Bacon 44 

您可以使用 DSum 计算每个 SNACK 的总 STOCK,而无需 GROUP BY。并在 ORDER BY 中使用 Dsum。我还需要在 DSum 值上使用 Val() 以使其正确排序。

SELECT y.SKU, y.STOCK, y.SNACK, y.FLAVOR
FROM YourTable AS y
ORDER BY
    Val(DSum("[STOCK]", "YourTable", "[SNACK]='" & y.SNACK & "'")) DESC,
    y.STOCK DESC;

请注意 DSum 是特定于 Access 的,因此如果您想要一个可以移植到另一个数据库的查询,这不适合。