zoukankan      html  css  js  c++  java
  • 数据库之Group By用法

    sql语句Group By用法

     

    sql语句Group By用法一则

    sql语句Group By用法一则
    如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么办呢?在这个情况下,我们要做到两件事:第一,我们对于 store_name 及 Sales 这两个栏位都要选出。第二,我们需要确认所有的 sales 都要依照各个 store_name 来分开算。这个语法为:   

    SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1"   

    在我们的示范上,   

    Store_Information 表格

    store_name

    Sales

    Date

    Los Angeles

    $1500

    Jan-05-1999

    San Diego

    $250

    Jan-07-1999

    Los Angeles

    $300

    Jan-08-1999

    Boston

    $700

    Jan-08-1999

    我们就打入, SELECT store_name, SUM(Sales)    FROM Store_Information GROUP BY store_name   

    结果:   

    store_name

    SUM(Sales)

    Los Angeles

    $1800

    San Diego

    $250

    Boston

    $700

     

    SQL之GROUP BY 之二

    首先讲讲GROUP BY 子句语法:



    SELECT column1, SUM(column2)



    FROM "list-of-tables"



    GROUP BY "column-list";

    例子如下:

    一个销售表sales:

    workername

    salemoney

    a1

    3000

    a2

    2000

    a3

    1000

    a2

    3000

    sql要求,查询每个员工的总销售总额:

    selectworkername,sum(salemoney) from sales group by workername

    sql要求,查询总销售额最大的员工姓名跟销售额:

    selectworkername,max(salemoney) from sales group by workername

    sql要求,查询总销售额大于等于2000的员工姓名跟销售额:

    select workername,sum(salemoney)from sales group by workername having sum(salemoney)>=2000



    group by 有一个原则,就是select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面 

    说白了就是select 所取出的字段 在分组里必须有

    但是排除被合计的字段

    比如 selecta,b,c from table group by a,b,c

    这里 group by 里 必须有a,b,c

    如果改成 selecta,b,sum(c) from table groupby a,b
    这里 因为c被合计了 所以按照a,b分组就可以了

    同样的合计函数还包括maxcount 等等!

    group by

        在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

       在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数

       select max(sal),job emp group by job;
       (注意max(sal),jobjob并非一定要出现,但有意义)

       查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。

      select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;

      当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having where 子句类似,均用于设置限定条件
     
      where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
      having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

      查询每个部门的每种职位的雇员数
      select deptno,job,count(*) from emp group by deptno,job

  • 相关阅读:
    SQL Server 日期和时间函数
    sql日期格式化函数
    C#中事件的使用
    CSS中的display:inline-block
    用aspnet_regiis注册Framework4.0框架
    什么是CSS hack
    第一次MySQL的SQL注入实验
    (二分)Block Towers(cf626)
    (多线程dp)Matrix (hdu 2686)
    (数位dp)Bomb (hdu 3555)
  • 原文地址:https://www.cnblogs.com/liuyandeng/p/5824027.html
Copyright © 2011-2022 走看看