有关SUM的问题。
我有一张桌子
ID | JOBSITE | EMPLOYEE | VENDOR | PRICE
---+---------+----------+----------+----------
1 | Job1 | CHris | Vendor1 | 100.00
2 | Job2 | Matt | Vendor1 | 100.00
3 | Job3 | Chris | Vendor2 | 100.00
从Vendor1查询所有内容非常有效。我用
Select * From table WHERE vendor="vendor1"
它显示两行,完美(实际上它更多但是这个例子将是两行) 我想使用SUM语句,但似乎当我这样做时,我得到的只是一行显示,但总SUM工作得很好。我尝试了几种不同的方法,但是我得到一个SQL错误,或者只是显示像这样的一行
ID, JOBESITE, EMPLOYEE, VENDOR, PRICE, TOTALPRICE
1, Job1, Chris, Vendor1, 100.00, 200.00
总和有效,但不会显示与Vendor1相关的所有行。
知道如何做到这一点吗? 我试过了
Select *, SUM(price) From table Where vendor="vendor1"
这基本上就是我想要的。我意识到代码不起作用,当我确实让它工作时,我只能得到正确总数的总价格列。或者我只有一个id行。添加Totalprice colum再次使用正确的值。但我想要的是将所有行连接到特定供应商,然后基本上在第1行Colum 6上。 Totalprice。所有价格加起来
答案 0 :(得分: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'
要获得结果,您需要使用SUM()
和GROUP BY
。由于您需要每个vendor
的总计,因此您需要在该字段上使用GROUP BY
。 GROUP BY
组合了彼此相等的所有值。
您需要使用子查询来获取totalprice
,因为如果您将SUM()
应用于所有记录,则无法获得正确的结果,因为id,jobsite,employee是不同的每条记录。
在没有子查询的情况下,请SQL Fiddle with a Demo申请SUM()
和GROUP BY
。