题解 | #计算总和#

整数转化

http://www.nowcoder.com/practice/c7df20a5a39e4357aecc1071e7fd523c

select 
    order_num,
    sum(item_price*quantity) as total_price
from
    OrderItems
group by
    order_num
having
    sum(quantity*item_price)>=1000
order by
    order_num
;

分析

题目要求:

根据订单号聚合,返回订单总价不小于1000 的所有订单号,总价 = item_price 乘以 quantity。

题目关键词:根据订单号聚合 sql关键词:group by 函数,

返回订单总价不小于1000 的所有订单号。 这是一个过滤条件,但这有一个坑 如果,直接这样写SQL语句:

where sum(item_price*quantity)>=1000

咋一看这好像没问题。

但是别忘记了:where后面不能加聚合函数!

回忆sql语法,这时候就想起了having

having也可以对结果进一步过滤,只不过having必须和group by联用。

使用having后,sql代码如下:

having sum(item_price*quantity)>=1000

这样,就符合了MySQL的语法规则。

分析结果

根据题目要求,可得完整的SQL语句,如下:

select
	order_num,sum(item_price*quantity) as total_price
from 
	OrderItems
group by
	order_num
having
	sum(item_price*quantity)>=1000
order by
	order_num
;

注意:需要对结果进行排序。

本题的另一种解法-子查询

select
	order_num,total_price
    from
	(select
     	order_num,sum(item_price*quantity) total_price 
     from
     	OrderItems
		group by
     		order_num) t
where
	total_price>=1000
order by
order_num
;

这种解法主要是使用了from的子查询,大家就当做知识的回顾。

全部评论

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务