将表按行分组排序,其中组按列组中的总和排序';s值-Postgresql
我怎样才能打开这张桌子:将表按行分组排序,其中组按列组中的总和排序';s值-Postgresql,sql,postgresql,sorting,Sql,Postgresql,Sorting,我怎样才能打开这张桌子: | User | ItemID | Quantity | TotalValue (ValueOfItem*Quantity) | | UserY | 1 | 1 | 15 | | UserX | 2 | 1 | 22 | | UserX | 3 | 1 |
| User | ItemID | Quantity | TotalValue (ValueOfItem*Quantity) |
| UserY | 1 | 1 | 15 |
| UserX | 2 | 1 | 22 |
| UserX | 3 | 1 | 7 |
| UserY | 3 | 1 | 7 |
| UserX | 1 | 2 | 30 |
| UserY | 2 | 1 | 22 |
| User | ItemID | Quantity | TotalValue (ValueOfItem*Quantity) |
| UserX | 1 | 2 | 30 |
| UserX | 2 | 1 | 22 |
| UserX | 3 | 1 | 7 |
| UserY | 1 | 1 | 15 |
| UserY | 2 | 1 | 22 |
| UserY | 3 | 1 | 7 |
在此表中:
| User | ItemID | Quantity | TotalValue (ValueOfItem*Quantity) |
| UserY | 1 | 1 | 15 |
| UserX | 2 | 1 | 22 |
| UserX | 3 | 1 | 7 |
| UserY | 3 | 1 | 7 |
| UserX | 1 | 2 | 30 |
| UserY | 2 | 1 | 22 |
| User | ItemID | Quantity | TotalValue (ValueOfItem*Quantity) |
| UserX | 1 | 2 | 30 |
| UserX | 2 | 1 | 22 |
| UserX | 3 | 1 | 7 |
| UserY | 1 | 1 | 15 |
| UserY | 2 | 1 | 22 |
| UserY | 3 | 1 | 7 |
我需要:
- 为了对用户进行分组,所以UserX行都在一起,UserY行都在一起
- 在用户的行中,ItemID需要按升序排列,因此为1,2,3
- 用户组需要按照用户的TotalValue总和的降序排列。
- 例如,UserX高于UserY,因为(30+22+7)>(15+22+7)
SELECT
user,
item_id,
quantity,
total_value
FROM (
SELECT
*,
sum(total_value) OVER (PARTITION BY user) as user_sum
FROM
mytable
)s
ORDER BY user_sum DESC, user, item_id
您的输入表有4/2条UserX/UserY记录,但预期的输出包含3/3。请修错桌子。