我的查询有什么问题

时间:2012-08-13 14:58:09

标签: sql

我有一个简单的查询:

SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW 

这表示选择列stco有问题。

但是,这两个字段都存在,而且:

SELECT stco
FROM MSTDW 

工作,这个

SELECT sum(STSD) As "Shipped Dollars"
FROM MSTDW 

也适用。

两者都有什么不妥?

由于

3 个答案:

答案 0 :(得分:2)

我认为你希望这个,一组,得到每个stco

的总和
SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW 
group by stco

对于应用聚合函数,您需要分组;无论如何,如果你只是想要所有列的总和(我不认为你想要那个,但我加上它以防万一)做

SELECT stco, (select sum(STSD) from MSTDW) As "Shipped Dollars"
    FROM MSTDW 
    group by stco

这将列出每个stco,并重复所有列的sum

答案 1 :(得分:2)

要使用聚合函数(例如SUM),您需要定义分组条件:

SELECT stco, sum(STSD) As "Shipped Dollars"
FROM MSTDW 
GROUP BY stco

第二个查询在没有stco的情况下工作的原因是因为该组在您要求的单个SUM值中是隐式的(即无条件求和)。

答案 2 :(得分:0)

好吧,stco不是aggregated,因此您必须加入GROUP BY

SELECT stco, SUM(STSD) AS "Shipped Dollars"
FROM MSTDW 
GROUP BY stco

但是,您也可以将汇总应用于stco,如下所示:

SELECT AVG(stco) AS SomeValue, SUM(STSD) AS "Shipped Dollars"
FROM MSTDW 

通常,所有值必须是聚合的,或者在分组键部分中,这将分隔数据的聚合区域。