sql sum 函数如何加条件?
表名为bbc,由下面几列构成(name,region,area,population,gdp)求:显示GDP超过所有Africa(非洲)国家总和的国家.selectnam...
表名为bbc,由下面几列构成(name, region, area, population, gdp)
求:显示GDP超过所有Africa(非洲)国家总和的国家.
select name from bbc
where gdp>(sum(gdp) where region in ('africa'))
提示语句错误 展开
求:显示GDP超过所有Africa(非洲)国家总和的国家.
select name from bbc
where gdp>(sum(gdp) where region in ('africa'))
提示语句错误 展开
6个回答
推荐于2018-07-06 · 知道合伙人软件行家
关注
展开全部
sql 中的 sum 配合 case when 就可以添加条件
例 :
sum(case when a >0 then a else 0 end )
将 a列所以大于 0 的值相加。
sum(case when rq >'2015-1-1' and rq <'2015-2-1' then a else 0 end )
将 rq为1月份的所有 a 列的值相加。
例 :
sum(case when a >0 then a else 0 end )
将 a列所以大于 0 的值相加。
sum(case when rq >'2015-1-1' and rq <'2015-2-1' then a else 0 end )
将 rq为1月份的所有 a 列的值相加。
展开全部
所有的聚合函数应该是放在select得后面,而不是放在where子句得后面。
所以应该这么写,一个嵌套:
select name
from bbc
where gdp>(select sum gdp
from bbc
where region='africa')
我不知道你得表里得region,area,是什么意思,因为我在百度查的时候都显示的是区域,而且不知道这两个字段都是记录什么的,所以就设定是区域等于‘非洲’,如果执行仍然出错,就把你的表的这两个字段具体记录的数据类型说下。希望对你有帮助。
所以应该这么写,一个嵌套:
select name
from bbc
where gdp>(select sum gdp
from bbc
where region='africa')
我不知道你得表里得region,area,是什么意思,因为我在百度查的时候都显示的是区域,而且不知道这两个字段都是记录什么的,所以就设定是区域等于‘非洲’,如果执行仍然出错,就把你的表的这两个字段具体记录的数据类型说下。希望对你有帮助。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个问题:分组了,就不用再用distinct了
第二个问题:where后跟分组前条件,having是分组后条件
第三个问题:你也用总金额为分组,不知道你有什么特定目的.
select
a.code
as
订单编号,a.amount
as
订单总金额,
sum(b.amount
+
b.amount_lans)
as
明细总金额
from
a
left
join
b
on
a.order_id
=
b.order_id
group
by
a.code,a.amount
having
a.total_amount
-
sum(b.amount
+
b.amount_lans)
<>
0
估计这个效果才是你要的
select
a.code
as
订单编号,sum(a.amount)
as
订单总金额,
sum(b.amount
+
b.amount_lans)
as
明细总金额
from
a
left
join
b
on
a.order_id
=
b.order_id
group
by
a.code
having
a.total_amount
-
sum(b.amount
+
b.amount_lans)
<>
0
第二个问题:where后跟分组前条件,having是分组后条件
第三个问题:你也用总金额为分组,不知道你有什么特定目的.
select
a.code
as
订单编号,a.amount
as
订单总金额,
sum(b.amount
+
b.amount_lans)
as
明细总金额
from
a
left
join
b
on
a.order_id
=
b.order_id
group
by
a.code,a.amount
having
a.total_amount
-
sum(b.amount
+
b.amount_lans)
<>
0
估计这个效果才是你要的
select
a.code
as
订单编号,sum(a.amount)
as
订单总金额,
sum(b.amount
+
b.amount_lans)
as
明细总金额
from
a
left
join
b
on
a.order_id
=
b.order_id
group
by
a.code
having
a.total_amount
-
sum(b.amount
+
b.amount_lans)
<>
0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql
中的
sum
配合
case
when
就可以添加条件
例
:
sum(case
when
a
>0
then
a
else
0
end
)
将
a列所以大于
0
的值相加。
sum(case
when
rq
>'2015-1-1'
and
rq
<'2015-2-1'
then
a
else
0
end
)
将
rq为1月份的所有
a
列的值相加。
中的
sum
配合
case
when
就可以添加条件
例
:
sum(case
when
a
>0
then
a
else
0
end
)
将
a列所以大于
0
的值相加。
sum(case
when
rq
>'2015-1-1'
and
rq
<'2015-2-1'
then
a
else
0
end
)
将
rq为1月份的所有
a
列的值相加。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select name from bbc
where gdp>(select sum(gdp) from bbc where region in ('africa'))
where gdp>(select sum(gdp) from bbc where region in ('africa'))
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询