gpt4 book ai didi

mysql - 如何对具有多个值的多个列求和

转载 作者:行者123 更新时间:2023-11-29 02:27:57 25 4
gpt4 key购买 nike

我正在寻找以下问题的解决方案:

  1. 进入用户表并找到在网站上列出项目的用户。在这个用户表中,没有关于拍卖的列。相反,它通过一个键连接到一个帐户表(在帐户中,此列称为用户)

  2. 我需要从这些 ID(已列出拍卖元素的用户)中找到他们的帐户余额。这也在帐户表中。余额包含在名为 operation_amount 的列中。我还有另一个名为 operation_type 的列,它描述了用户的余额是正数还是负数。例如,如果 operation_type = 1,他的余额为负,而如果 operation_type = 2,他的余额为正。

现在我有另一个名为 tmpinvoice 的表,其中有一列名为 amount。这表明用户需要向站点管理员支付多少费用。

鉴于此,我需要计算他总共需要支付多少。例如,如果用户有 200 美元的余额,我需要根据 operation_type 检查它是负数还是正数。

所以我有疑问哪里是只为记录做这件事

SELECT u.id AS id_user, u.nick,
CASE ac.operation_type WHEN 1 THEN ac.operation_amount - tm.amount
WHEN 2 THEN ac.operation_amount + tm.amount
ELSE 'N/A' END AS `fee`
FROM auctionbg_search.accounts AS ac
LEFT JOIN auctionbg_search.users AS u ON TRUE
AND u.id = ac.user
LEFT JOIN auctionbg_search.auctions AS a ON TRUE
AND a.id = ac.auction
LEFT JOIN auctionbg_search.tmpinvoice AS tm ON TRUE
WHERE TRUE
AND tm.amount = ac.operation_amount

这是我收到的结果

http://gyazo.com/3d7e7f52ee14d21cc8c8d33b6bbc479a

是的,但是这只为列中的 1 个值计算“费用”,如果用户有多个值怎么办

喜欢这个用户:

http://gyazo.com/c3bdb29fa235044ab888dc0385bbcdbd

我需要根据给定用户的 operation_amount 计算总金额,并从该总金额中删除 tmpinvoice

我的一个 friend 告诉我用

IF(SUM(ac.operation_amount), IS NULL , 0, sum(ac.operation_amount) 

并使用 + 和 - 加入 2 个时间账户(表)

加入 1 次为 +,2 次为 -

但我不知道会怎样 :)

最佳答案

在 SUM 函数中使用 CASE 表达式。

   SELECT u.id AS id_user, u.nick,
SUM(CASE ac.operation_type WHEN 1 THEN ac.operation_amount - tm.amount У
WHEN 2 THEN ac.operation_amount + tm.amount
ELSE 'N/A' END) AS `fee`
FROM auctionbg_search.accounts AS ac
LEFT JOIN auctionbg_search.users AS u ON TRUE AND u.id = ac.user
LEFT JOIN auctionbg_search.auctions AS a ON TRUE AND a.id = ac.auction
LEFT JOIN auctionbg_search.tmpinvoice AS tm ON TRUE
WHERE TRUE AND tm.amount = ac.operation_amount
GROUP BY u.id, u.nick

请参阅 SQLFiddle 上的演示

关于mysql - 如何对具有多个值的多个列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18052032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com