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

 时间:2026-02-12 11:50:02

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

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 Server如何利用查询创建一张表
  • SQL怎么改表名
  • sql出现列名无效的原因
  • sql求某列的和、平均值、最大值、最小值、行数
  • 数据库SQL语句中,如何统计平均值?avg函数使用
  • 热门搜索
    什么是营销 钙片什么时候吃最好 test是什么意思 冰箱冷藏室结冰是什么原因 1993年属什么生肖 公司章程是什么 巨蟹座女和什么座最配 四月开什么花 一次什么的尝试 五毛是什么意思