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

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

东西/原料

  • sqlserver

方式/步调

  1. 1

    建立一个姑且表,用于演示sqlserver数据库中,若何在订单表上,先分类统计,然后再次筛选数据

    IF OBJECT_ID('tempdb..#tblOrder') IS NOT NULL DROP TABLE #tblOrder; 

    CREATE TABLE #tblOrder(

        OrderID varchar(50),    -- 订单号

        OrderLine int,               -- 订单行号

        OrderTotal int              -- 订单数目     

    );

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

  3. 3

    查询姑且表1中的测试数据

    select * from #tblOrder;

  4. 4

    按照订单号汇总所有的数目,这个时辰就需要利用到group by分组语句,以及sum统计函数

    select '订单号' = OrderID, '总数目' = sum(OrderTotal)

    from #tblOrder

    group by OrderID

  5. 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. 6

    固然,上面的SQL也实现了需求,可是,看起来SQL语句较多。若何才能不利用嵌套SQL呢?先看下面的SQL,概况上看起来,有点像这么回事,可是,现实却达不到结果。下面的SQL统计的是,订单明细数目大于4000的值汇总,而不是总订单数目大于4000的订单数目汇总

    select '订单号' = OrderID, '总数目' = sum(OrderTotal)

    from #tblOrder

    where OrderTotal > 4000

    group by OrderID

  7. 7

    当现实营业再复杂一些,获取的字段再多一些的时辰,不想利用嵌套SQL的时辰,就可以利用having语句了

    select '订单号' = OrderID, '总数目' = sum(OrderTotal)

    from #tblOrder

    group by OrderID

    having sum(OrderTotal) > 4000

  • 发表于 2019-05-21 21:02
  • 阅读 ( 1986 )
  • 分类:其他类型

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

联系我们:uytrv@hotmail.com 问答工具