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

  • 相关阅读:
    WPF 关于拖拽打开文件的注意事项
    asp.net core 3.1中对Mongodb BsonDocument的序列化和反序列化支持
    用百度webuploader分片上传大文件
    多线程学习笔记
    web.config数据库连接字符串加密
    Visual Studio 2010 常用快捷方式
    Team Foundation Server 2013 日常使用使用手册(四)分支与合并
    Team Foundation Server 2013 日常使用使用手册(三)上传新工程、创建任务、创建bug、设置预警
    Team Foundation Server 2013 日常使用使用手册(二)修改、签入、撤销、回滚、对比代码变更
    Team Foundation Server 2013 日常使用使用手册(一)-本地连接TFS、查看任务
  • 原文地址:https://www.cnblogs.com/liuyandeng/p/5824027.html
Copyright © 2011-2022 走看看