zoukankan      html  css  js  c++  java
  • SQL夯实基础(三):聚合函数详解

    一、GROUP BY  Having

    聊聚合函数,首先肯定要弄清楚group by 和having 的用法。

    SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore

    FROM student

    GROUP BY id

    HAVING AVG(score)>=80;

    注意

    1、因为聚合函数通过作用于一组数据而只返回一个单个值,因此,在SELECT语句中出现的元素要么为一个聚合函数的输入值,要么为GROUP BY语句的参数,否则会出错。

    2、where与having的区别,where是在分组前对结果集进行过滤,而having是对group by分组后的结果集进行过滤。

    二、常用聚合函数

    1. AVG 返回指定组中的平均值,空值被忽略。

    例:select prd_no,avg(qty) from sales group by prd_no

    2. COUNT 返回指定组中项目的数量。

    例:select count(prd_no) from sales

    3. MAX 返回指定数据的最大值。

    例:select prd_no,max(qty) from sales group by prd_no

    4. MIN 返回指定数据的最小值。

    例:select prd_no,min(qty) from sales group by prd_no

    5. SUM 返回指定数据的和,只能用于数字列,空值被忽略。

    例:select prd_no,sum(qty) from sales group by prd_no

    6. COUNT_BIG 返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。

    例:select count_big(prd_no) from sales

     

    另外还有一个mysql里面可以使用的特例:group_concat

    将group by产生的同一个分组中的值连接起并且默认用逗号分割。

    三、自定义聚合函数

    MYSQL中没有办法定义聚集函数。

    但是sql server 是可以的。

    详情可以参考下面的博文

    https://www.cnblogs.com/volts0302/p/5545401.html

    由于我工作的时候使用mysql较多,所以对自定义聚合函数的应用并不了解,这里就不多说了。

    四、子查询

    SQL不仅允许简单的SELECT查询,还允许创建子查询,即嵌套在其他查询中的查询。

    以下为实例

    select m.id as PolicyId,m.PolicyNo,m.PolicyType,m.PolicyStartTime,m.PolicyEndTime,m.BelogOrganizationName,(select GROUP_CONCAT(b.`Name`) from policy_people as b where  b.PolicyIndexId=m.Id and b.Relation=2 ) as InsuredPeople ,(select count(0) from report where  report.PolicyId=m.Id) as CompenCount from policy_people as p inner join policy_index as m on p.PolicyIndexId=m.id where p.CertificateNo=?certificateNo  and  m.PolicyStartTime>?year
  • 相关阅读:
    LeetCode-Read N Characters Given Read4 II
    LeetCode-One Edit Distance
    LeetCode-Palindrome Permutation II
    LeetCode- Longest Absolute File Path
    LeetCode-Strobogrammatic Number II
    LeetCode-Strobogrammatic Number
    LeetCode-Flatten 2D Vector
    LeetCode-Shortest Word Distance III
    LeetCode-Shortest Word Distance II
    Cookie/Session
  • 原文地址:https://www.cnblogs.com/qixinbo/p/8457953.html
Copyright © 2011-2022 走看看