查询的SQL总和

时间:2015-01-25 04:17:05

标签: sql sql-server

Chemical Name   QTY DOA
-------------   --- --------
Acetic acid     12  24-01-15
2BL             58  22-01-15
Action Viol     22  20-01-15
Balmetenca      74  18-01-15
AWH             13  13-01-15
AWH             22  13-01-15
Actoil          11  07-01-15
Ammonium sulp   12  09-01-15
Actoil 4        11  19-01-15
Actoil ITS      24  06-01-15
Balysyn         35  11-01-15
Bastimol PH     14  12-01-15
Acid Ph         17  05-01-15
Acetic acid     12  24-12-14
2BL             20  01-12-14

嗨,我想知道每个qty中出现chemical_name多少的输出 就像chemical_nameqty(13+22)那样我应该是25,其余的是化学物质......(即)使用以下查询查看每个chemical_name am的总数量:

SELECT Chemical_name,
       Qty,
       DOA
FROM   sample_chemical
GROUP  BY Chemical_name,DOA,Qty
HAVING DOA BETWEEN '2015-01-01' AND '2015-01-30' 

但它并没有总结。如果我使用where子句那么它工作正常..如果添加新的化学名称,那么我们不能使用where子句。

2 个答案:

答案 0 :(得分:1)

您在查询中根本没有使用Sum函数!

这个怎么样:

Select Chemical_name, Sum(Qty), Count(Chemical_name), DOA
From sample_chemical
Where DOA between '2015-01-01' and '2015-01-30'
Group by Chemical_name, DOA

另外,我会给你一个建议:不要提出如此混乱的问题。这里的很多用户只会给你一个downvote,他们会是正确的,因为缺乏有关你需要的信息,以及你已经尝试过的信息。相反,尽量让事情尽可能清楚,帮助谁想要帮助你准确理解你的需求和问题。划分您的实际数据,数据库/表的结构,您想要生成的结果究竟有多大帮助。试着阅读你自己的问题,但是你不知道你的数据库,化学物质是什么,实际数量是多少,我想你会理解我的意思。

我还插入了发现了多少相同化学物质的计数(更改为使用来自sample_chemical表的一些Id,以获得更好的性能)。 :)

祝你好运,希望我能帮助你!

答案 1 :(得分:0)

您需要从group by中删除不需要的列,并在sum中使用select聚合。

仅在Chemical_name group by使用columns,而不是qty,因为您希望找到每个Chemical_name中的SELECT Chemical_name, Sum(Qty) FROM sample_chemical WHERE DOA BETWEEN '2015-01-01' AND '2015-01-30' GROUP BY Chemical_name 总数。

qty

如果您希望Chemical_name每个day中的Chemical_nameDOA,那么您需要在group by中添加SELECT Chemical_name, Sum(Qty), DOA FROM sample_chemical WHERE DOA BETWEEN '2015-01-01' AND '2015-01-30' GROUP BY Chemical_name, DOA 和{{1}}

{{1}}