[英]SQL select from table where key in array group by column
給定一張表賬單
# bills
id | name | amount | user_id
1 | jumper | 100 | 1
2 | gopper | 200 | 1
3 | jumper | 150 | 2
4 | blobber | 300 | 3
和一個表用戶
# users
id | name
1 | John Doe
2 | Mike Marley
3 | Bill Mickane
當我執行查詢時
select * from bills where user_id in (1,2) order by name, amount desc
我明白了
# bills
id | name | amount | user_id
2 | gopper | 200 | 1
3 | jumper | 150 | 2
1 | jumper | 100 | 1
但我想要的是(和所有其他專欄)
# bills
name | amount
gopper | 200
jumper | 250
這將如何實現?
我很想用
select * from bills where user_id in (1,2) group by name order by name, amount desc
但不能作為group by
還需要列出其他列名,最終不會根據需要合並兩行。
ps 我正在使用 postgresql
如果您只想要這兩個字段,您可以使用 Aggregate SUM():
SELECT
name,
SUM(amount)
FROM
bills
WHERE
user_id IN (1,2)
GROUP BY
name
ORDER BY
name,
amount
但是,假設您想要的不僅僅是這兩個字段......嵌套查詢應該可以幫助您。
SELECT
m.id, m.name, t.userId, t.amount
FROM Bills m
INNER JOIN
(
SELECT
user_id as userID,
SUM(amount) as amount
FROM
bills
GROUP BY user_id
) t
ON t.UserID = m.UserID
SELECT
name, SUM(amount)
FROM
bills
WHERE
user_id IN (1,2)
GROUP BY
name
ORDER BY
name, amount DESC
SELECT name, SUM(amount) as amount
FROM bills where user_id IN (1,2)
GROUP BY name
ORDER BY name, amount DESC
select name, sum(amount) as amount
from bills where user_id in (1,2)
group by name
order by name, amount desc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.