我有下表
+--------+----------+--------+
| STORE | PRODUCT | AMOUNT |
+--------+----------+--------+
| store1 | product1 | 100 |
| store1 | product2 | 90 |
| store2 | product2 | 95 |
| store2 | product1 | 90 |
| store3 | product1 | 120 |
+--------+----------+--------+
事情是,我想按每家商店的金额来订购这张桌子。在这个例子中,store1有190,store2有185和store3 120.所以在这个例子上授予了订单,我也想按每个产品的数量订购,但是不想在“商店”范围之外得到这个“,并且不想分组,因为我需要显示所有行......
如何在H2数据库中实现此排序?我可以欣赏其他数据库,但H2是我的主要关注点。
不过,性能是一个很大的问题......答案 0 :(得分:2)
在大多数数据库中,您将使用窗口功能。 H2不支持它们。所以你需要做一个明确的连接:
select t.*
from table t join
(select store, sum(amount) as totalamount
from table t
group by store
) ts
on t.store = ts.store
order by ts.totalamount desc, ts.store;
请注意store
位于order by
。这处理两个分数具有相同总数的情况。每个商店的所有行仍然在一起。