带有条件的SQL查询SUM

问题描述 投票:0回答:4

我在寻找所需的好查询,寻求帮助方面遇到一些困难。在多次JOIN和很多WHERE之后,我有了以下列和值:

+---------+----------+--------+-------+
| id_test | quantity | price  |  fee  |
+---------+----------+--------+-------+
| "1-3"   |        1 | 33.52  | 29.00 |
| "1-5"   |        1 | 33.52  | 29.00 |
| "1-6"   |        1 | 33.52  | 29.00 |
| "1-8"   |        1 | 86.49  | 29.00 |
| "19-1"  |        1 | 176.54 | 29.00 |
| "19-4"  |        1 | 176.54 | 29.00 |
| "19-5"  |        4 | 176.54 | 29.00 |
| "19-6"  |        1 | 199.47 | 29.00 |
| "19-6"  |        1 | 176.54 | 29.00 |
| "20-10" |        2 | 72.67  | 29.00 |
| "20-11" |        2 | 18.95  | 29.00 |
| "20-9"  |        1 | 22.13  | 29.00 |
+---------+----------+--------+-------+

每个id_test对象的数量,价格和费用。我想对所有东西求和,以得到一个全球价格:(数量*价格)+费用事实是,这就是我遇到的问题,id_test只需要添加一次费用。但是,我这里有两个id_test“ 19-6”。

如果我总计所有东西,我将得到1827.67(价格*数量)+ 348(费用)。

因为我有两个“ 19-6”,所以我需要1827.67(价格*数量)+ 319(费用)。

您将如何使用SQL?

谢谢

sql postgresql group-by having
4个回答
0
投票

[id_test仅一次,这意味着您必须进行不同的id_test。如果29.00是固定的静态值,则可以采用唯一的id_test并将其乘以29.00]

您可以将上述查询的值插入临时表(#tempTable)。然后,您上面的输出值将被临时保存到表中。

SELECT
  DISTINCT(id_test) * 29.00 AS fee
FROM
  #tempTable

0
投票
  1. 在临时表中输入id_test,(数量*价格)和费用。

0
投票
select sum(quantity * price),
       (select sum(fee)
        from (select distinct(id_test), fee
        from sales) as fees)
from sales;

0
投票

您可以使用公用表表达式(CTE)


0
投票

您可以使用row_number()

© www.soinside.com 2019 - 2024. All rights reserved.