簡體   English   中英

SQL select from table where key in array group by column

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM