2012-04-03 71 views
0

是否可以按总数组中的条件对返回行进行排序?根据组总和标准排序

例如,我的数据是:

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 

由于汽车书籍的总和是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 

在另一方面,我谨criter添加其他订单ia(在示例中,“产品”标准)。 我已经尝试了很多使用ORDER BY和GROUP BY的东西,但它总是汇总我的结果。

感谢您的帮助!

+2

为什么你要车 - >艺术 - >桥梁顺序? – hjpotter92 2012-04-03 18:38:57

+1

你用什么来确定类别的顺序?你有车,然后艺术然后桥梁,但不是由你的总和排序,因为艺术是在汽车和桥梁之间​​。 – Taryn 2012-04-03 18:39:51

+0

我在订单上犯了一个错误。它是Sum(Car)> Sum(Bridge)> Sum(Art) – iwalktheline 2012-04-04 08:51:55

回答

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> 

这是我遵循的程序:

  1. 找到小计
  2. 加入原始表的分类汇总
  3. 责令原表由那些小计
+0

+1 OP希望'order by r.total DESC,...'但这只是细节。 – 2012-04-03 18:52:10

+0

+1我认为在内部连接的查询中按类别分组可能也是必要的。 – 2012-04-03 18:57:10

+0

@edalorzo是的!谢谢! – 2012-04-03 18:58:32