在出产系统中,一个大订单凡是会拆分为良多的小订单,每个订单的数目都不不异,那么,若何才能在订单明细表中,按照订单号,对总的订单数目进行筛选呢?
需要这些哦
sqlserver
方式/
1建立一个姑且表,用于演示sqlserver数据库中,若何在订单表上,先分类统计,然后再次筛选数据
IF OBJECT_ID('tempdb..#tblOrder') IS NOT NULL DROP TABLE #tblOrder;
CREATE TABLE #tblOrder(
OrderID varchar(50), -- 订单号
OrderLine int, -- 订单行号
OrderTotal int -- 订单数目
);
文章插图
2往姑且表中1插入几行测试数据,模订定单数据,此处假设是订单明细数据,所以订单号是可以反复的
insert into #tblOrder(OrderID, OrderLine, OrderTotal) values('PO00001', 1, 1000);
insert into #tblOrder(OrderID, OrderLine, OrderTotal) values('PO00001', 2, 2000);
insert into #tblOrder(OrderID, OrderLine, OrderTotal) values('PO00001', 3, 3000);
【sql数据库如何统计总订单数量大于某值的记录】insert into #tblOrder(OrderID, OrderLine, OrderTotal) values('PO00002', 1, 4000);
insert into #tblOrder(OrderID, OrderLine, OrderTotal) values('PO00003', 1, 5000);
文章插图
3查询姑且表1中的测试数据
select * from #tblOrder;
文章插图
4按照订单号汇总所有的数目,这个时辰就需要利用到group by分组语句,以及sum统计函数
select '订单号' = OrderID, '总数目' = sum(OrderTotal)
from #tblOrder
group by OrderID
文章插图
5在汇总完当作订单数目的根本上,若何筛选出总订单数跨越4000的订单号以及数目呢?最简单的体例就是,嵌套SQL,再次筛选,实现体例如下
select '订单号' = tmp.OrderID, '总数目' = tmp.OrderTotal
from(
select OrderID, OrderTotal = sum(OrderTotal)
from #tblOrder
group by OrderID
)tmp
where tmp.OrderTotal > 4000
文章插图
6固然,上面的SQL也实现了需求,可是,看起来SQL语句较多 。 若何才能不利用嵌套SQL呢?先看下面的SQL,概况上看起来,有点像这么回事,可是,现实却达不到结果 。 下面的SQL统计的是,订单明细数目大于4000的值汇总,而不是总订单数目大于4000的订单数目汇总
select '订单号' = OrderID, '总数目' = sum(OrderTotal)
from #tblOrder
where OrderTotal > 4000
group by OrderID
文章插图
7当现实营业再复杂一些,获取的字段再多一些的时辰,不想利用嵌套SQL的时辰,就可以利用having语句了
select '订单号' = OrderID, '总数目' = sum(OrderTotal)
from #tblOrder
group by OrderID
having sum(OrderTotal) > 4000
文章插图
以上内容就是sql数据库如何统计总订单数量大于某值的记录的内容啦,希望对你有所帮助哦!
推荐阅读
- 宅男宅女在家里要如何锻炼身体呢
- 如何品鉴金骏眉?四招教会你
- 如何用正确的方式贮藏金骏眉?
- qq如何提高申诉成功率
- qq飞车如何玩舞蹈
- 王者荣耀如何玩好后羿
- 什么牌子的户外刀好,如何选购户外刀
- 如何合成制作出The Carrot Cyclops
- 家里出现白蚁如何解决 家里发现白蚁怎么办?
- 脸上如何补充胶原蛋白 如何正确补充胶原蛋白?