按组和标准排序

khe*_*aud 0 mysql sql group-by

是否可以在总和组上订购带有标准的退货行?

例如,我的数据是:

Id     Price     Product     Category
1      12        Book1       Car
2      1         Book2       Art
3      8         Book3       Car
4      7         Book4       Art
5      11        Book5       Car
6      24        Book6       Bridge
Run Code Online (Sandbox Code Playgroud)

由于汽车书籍的总和是31,艺术书籍的总和是8,桥书的总和是24,我希望得到以下结果(先车,然后是桥,然后是艺术):

Id     Price     Product     Category
1      12        Book1       Car
3      8         Book3       Car
5      11        Book5       Car
6      24        Book6       Bridge
2      1         Book2       Art
4      7         Book4       Art
Run Code Online (Sandbox Code Playgroud)

另一方面,我想添加其他Order by条件(在示例中,"Product"条件).我使用ORDER BY和GROUP BY尝试了很多东西,但它总是聚合我的结果.

感谢帮助 !

Mat*_*ick 6

你可以这样做:

select 
  l.* from table l
inner join (
  select category, sum(price) as total from table group by category
) r
on l.category = r.category
order by r.total, <some_other_column>
Run Code Online (Sandbox Code Playgroud)

这是我遵循的程序:

  1. 找到小计
  2. 将原始表连接到小计
  3. 按原则表排序原始表格