关于 SUM 的问题。
我有一张桌子
ID | JOBSITE | EMPLOYEE | VENDOR | PRICE
---+---------+----------+----------+----------
1 | Job1 | CHris | Vendor1 | 100.00
2 | Job2 | Matt | Vendor1 | 100.00
3 | Job3 | Chris | Vendor2 | 100.00
仅从供应商 1 查询所有内容效果很好。我使用
Select * From table WHERE vendor="vendor1"
它完美地显示两行(实际上它更多,但此示例将是两行(我想使用 SUM 语句,但似乎当我这样做时,我得到的只是显示一行,但总 SUM 效果很好。我已经尝试了几种不同的方法,但我要么收到SQL错误,要么只是像这样显示一行
ID, JOBESITE, EMPLOYEE, VENDOR, PRICE, TOTALPRICE
1, Job1, Chris, Vendor1, 100.00, 200.00
总和有效,但它不会显示与供应商 1 相关的所有行。
知道如何做到这一点吗?我试过了
Select *, SUM(price) From table Where vendor="vendor1"
这基本上就是我想要的。我意识到代码不起作用,当我让它工作时,我只是得到具有正确总数的总价格列。或者我只有一个 id 行。加上总价列,再次获得正确的值。但我想要的只是将所有行附加到特定供应商,然后基本上在第 1 行 6 列上。总价。所有价格加起来
您需要使用聚合和GROUP BY
SELECT t1.id,
t1.jobsite,
t1.employee,
t1.vendor,
t2.TotalPrice
FROM yourTable t1
INNER JOIN
(
SELECT SUM(price) TotalPrice, vendor
FROM yourTable
GROUP BY vendor
) t2
ON t1.vendor = t2.vendor
WHERE t1.vendor = 'vendor 1'
请参阅带有演示的 SQL 小提琴
要获得结果,您需要使用 SUM()
和 GROUP BY
. 由于您想要每个vendor
的总数,那么这就是为什么您需要在该字段上进行GROUP BY
的原因。GROUP BY
组合了彼此相等的所有值。
您需要使用子查询来获取totalprice
因为如果对所有记录应用SUM()
,则不会获得正确的结果,因为每个记录的 id、作业站点、员工都不同。
请参阅带有应用SUM()
和GROUP BY
的 SQL 小提琴演示,而无需子查询。