zoukankan      html  css  js  c++  java
  • Sql语句中的分组

    1。选前几条数据
      
       select top 10 orderid,amt=unitprice*quantity
       from ordredetails 
       order by amt desc
    2.利用group by 子句对select命令所选数据分组。分组后可以显示出来
      group by是除了不含汇总函数(sum,avg,count,min,max等以外的列)
      select prod_id,sum(qty*unit_price) tot_amt
     from sale_item
     group by prod_id
     order by tot_amt desc
    3.group by 子句还可以加 with cube语句,加上with cube语句,其返回的数据除了和没有with cube语句一样外,,另外它会得到一些加总列。
      select sup_id,prod_id ,sum(qty*unit_price),sum(qty) tot_amt
      from sale_item
      groupby sup_id,prod_id with cube
      将有对应每个sup_id的加总列,每个prod_id 的加总列,和null,null全部的加总列
    4.with cube语句换成with rollup ,则只返回最高层次的group列(最靠近group by的列的加总)
       上面的例子,只返回sup_id的加总列,每个sup_id后有个加总列
    5。使用grouping区分空值    
    cube操作生成的空值null带来一个问题,即如何区分cube操作生成的null值和实际数据中返回的null值。这个问题,可以用grouping函数解决。如果列中的值来自事实数据,则grouping函数返回0,如果列中的值是cube操作所生成的null,则返回1。在cube操作中,所生成的null代表全体值。可将select语句写成使用grouping函数将null替换为字符串all。
    因为事实数据中的null表名数据值未知,所以select语句还可以用字符串unknow替代来自事实数据的null。
          select productid,grouping(productid),orderid,grouping(orderid),sum(quantity)
         from order
        group by productid,orderid
        with cube
        order by productid,orderid
    6.group by   子句经常会和having子句搭配,用来找出每个组别中满足指定条件的数据,以下命令由产品文件中找出代码重复者,也就是同一型产品有两家以上的供应商。
      select prod_id,count(*) from stock
       group by prod_id
       having count(*)>1
       order by prod_id
  • 相关阅读:
    Oracle队列锁enq:US,Undo Segment
    Oracle队列锁:IV,Library Cache Invalidation
    Oracle队列锁enq:TS,Temporary Segment (also TableSpace)
    CSS在IE6、7、8中的差别
    javascript+HTML+CSS面试题
    工作中遇到的CSS问题
    10种顶级javascript框架比较The Top 10 Javascript MVC Frameworks
    比较好的Javascript资源学习网站
    css sprite网页优化技术
    IE6_BUG解决方案
  • 原文地址:https://www.cnblogs.com/goody9807/p/350041.html
Copyright © 2011-2022 走看看