数据库操作的SQL语句问题

有一张记录商品销售情况的表,有如下3个字段:orderid(订单号),shoppingid(出售商品id),num(出售商品数量),现在要得到每种商品的销售量,我想用select sum(num) from 表名 where shoppingid=?但是报异常,我猜想可能是这样的问题,比如某种shoppingid=5的商品一件也没卖出,那么这张表里就不会有shoppingid=5的记录,执行select sum(num) from 表名 where shoppingid=5时是不是就出错了,要实现能得到每种商品的销售量要怎么弄?

不同的shoppingid 表示不同商品吗?如果是的话,查询可以这样写:

-- 每种商品的销量
SELECT SUM(num) As 总销量 FROM 表名 GROUP BY shoppingId
-- 某种(shoppingid=5)商品的销量
SELECT SUM(sum) As 总销量 FROM 表名 WHERE shoppingid = 5 GROUP BY shoppingid
--或者
SELECT SUM(sum) As 总销量 FROM 表名 WHERE shoppingid = 5

另外,您的疑问:“……执行select sum(num) from 表名 where shoppingid=5时是不是就出错了……”并不存在!如果表中没有指定的记录,查询能够正常执行,只是返回的结果为空值(null)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-30
你这个错误不是这个问题造成的,仔细检查你的表里面的数据,看看 num 是否有null值的存在,如果有的话,你就要先判断null转换成0,然后在执行sum 我不知道你是用的什么数据库 ,比如sqlserver 的 isnull 和oracle 的nvl这样的函数。追问

谢谢你的回答,你说的很对,我要将null转化为0

第2个回答  2019-04-20
select
市,县
from

group
by
市,县
having
count(县)
=1
这句既然可以通过,那么把其中的市,县两个字段换成*
就是所有的字段了。。
select *
from

group
by
市,县
having
count(县)
=1
第3个回答  2014-08-30
A 错误。操作数数据类型 datetime 对于 sum 运算符无效
B 错误。 操作数数据类型 datetime 对于 avg 运算符无效
C 正确。
D 错误。avg函数只能有一个参数。
E 正确。
F 错误。'maximum' 不是可以识别的 内置函数名称。
请采纳答案,支持我一下。
相似回答