sql数据库如何统计总订单数量大于某值的记录

在出产系统中,一个大订单凡是会拆分为良多的小订单,每个订单的数目都不不异,那么,若何才能在订单明细表中,按照订单号,对总的订单数目进行筛选呢?

需要这些哦
sqlserver
方式/
1建立一个姑且表,用于演示sqlserver数据库中,若何在订单表上,先分类统计,然后再次筛选数据
IF OBJECT_ID('tempdb..#tblOrder') IS NOT NULL DROP TABLE #tblOrder; 
CREATE TABLE #tblOrder(
    OrderID varchar(50),    -- 订单号
    OrderLine int,               -- 订单行号
    OrderTotal int              -- 订单数目     
);

sql数据库如何统计总订单数量大于某值的记录

文章插图

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);

sql数据库如何统计总订单数量大于某值的记录

文章插图

3查询姑且表1中的测试数据
select * from #tblOrder;

sql数据库如何统计总订单数量大于某值的记录

文章插图

4按照订单号汇总所有的数目,这个时辰就需要利用到group by分组语句,以及sum统计函数
select '订单号' = OrderID, '总数目' = sum(OrderTotal)
from #tblOrder
group by OrderID

sql数据库如何统计总订单数量大于某值的记录

文章插图

5在汇总完当作订单数目的根本上,若何筛选出总订单数跨越4000的订单号以及数目呢?最简单的体例就是,嵌套SQL,再次筛选,实现体例如下
select '订单号' = tmp.OrderID, '总数目' = tmp.OrderTotal
from(
     select OrderID, OrderTotal = sum(OrderTotal)
     from #tblOrder
     group by OrderID
)tmp
where tmp.OrderTotal > 4000

sql数据库如何统计总订单数量大于某值的记录

文章插图

6固然,上面的SQL也实现了需求,可是,看起来SQL语句较多 。 若何才能不利用嵌套SQL呢?先看下面的SQL,概况上看起来,有点像这么回事,可是,现实却达不到结果 。 下面的SQL统计的是,订单明细数目大于4000的值汇总,而不是总订单数目大于4000的订单数目汇总
select '订单号' = OrderID, '总数目' = sum(OrderTotal)
from #tblOrder
where OrderTotal > 4000
group by OrderID

sql数据库如何统计总订单数量大于某值的记录

文章插图

7当现实营业再复杂一些,获取的字段再多一些的时辰,不想利用嵌套SQL的时辰,就可以利用having语句了
select '订单号' = OrderID, '总数目' = sum(OrderTotal)
from #tblOrder
group by OrderID
having sum(OrderTotal) > 4000

sql数据库如何统计总订单数量大于某值的记录

文章插图


以上内容就是sql数据库如何统计总订单数量大于某值的记录的内容啦,希望对你有所帮助哦!

推荐阅读