zoukankan      html  css  js  c++  java
  • SQL中的聚合函数运用

    参考网址: https://zhuanlan.zhihu.com/p/245115561

    聚合函数是什么

    聚合函数是对一组值执行计算,并返回单个值的函数。常与 SELECT 语句的 GROUP BY 子句一同使用。

    常见聚合函数有哪些

    1. count():计数,count(列名)不计算空值,count()计入空值
    2. sum():对一列数据求和,必须为数字
    3. avg():对一列数据求均值。值为null时,计算平均值时会忽略带有null值的那一行
    4. min():最小值
    5. max():最大值

    聚合函数应用的注意事项

    1. where子句后不能跟聚合函数
    2. having后可用聚合函数进行筛选
    3. 执行的优先顺序为:where > group by > having > order by
    4. 运用group by之后,select中返回的字段只能出现聚合字段(或与之对应的唯一值)和聚合函数。举个栗子:有学号、性别、年龄3个字段,如果group by性别,则只能返回性别及其相关聚合函数,如果返回年龄或者学号,则只会返回1行,往往和实际需求不符

    聚合函数练习题

    拿到SQL题目后,解题可分为3步(根据难易程度可进行省略):

    • 翻译成大白话
    • 写出分析思路
    • 写出对应的sql子句
    world 表格

    1、计算世界总人口

    分析思路:“总人口”是所有人口相加,用sum函数

    SELECT SUM(population)
    FROM world

    2、列出所有的洲名, 每个只有一次

    大白话:表中洲去重后的名称列出来

    分析思路:用distinct

    SELECT DISTINCT continent
    FROM world

    3、找出非洲(Africa)的GDP总和

    分析思路:先找出非洲(where),再求和GDP(sum)

    SELECT SUM(gdp)
    FROM world
    WHERE continent = 'Africa'

    4、有多少个国家面积大于一百万

    分析思路:先筛选出面积大于一百万的国家(where),再对这些国家进行计数(count)

    SELECT count(name)
    FROM world
    WHERE area > 1000000

    5、“法国”,“德国”,“西班牙”的總人口是多少?

    分析思路:先筛选出法国”,“德国”,“西班牙”(where),再对这些国家人口进行求和(sum)

    SELECT sum(population)
    FROM world
    WHERE name in ('France','Germany','Spain')

    6、对每一个洲,展示洲份和国家的数量

    分析思路:对洲进行分组(group by),然后对每组国家数量进行计数(count)

    SELECT continent, count(name)
    FROM world
    GROUP BY continent

    7、对每一个洲,展示洲份和至少有1000万人口国家的数目

    分析思路:先筛选出有1000万人口的国家(where),然后对洲进行分组(group by),最后给出计数结果(count)

    SELECT continent, count(name)
    FROM world
    WHERE population >= 10000000
    GROUP BY continent

    注意:这里筛选1000万人口不能用having来完成,因为人口不是分组字段(continent才是),这是我最开始刷题时常常混淆的地方(指where和having)

    8、列出有至少1亿人口的洲

    分析思路:先对洲进行分组(group by),然后计算每个洲的人口总和(sum),最后筛选出有1亿人口的洲(having)

    SELECT continent
    FROM world
    GROUP BY continent
    HAVING SUM(population) >= 100000000

     

  • 相关阅读:
    APNS 证书生成注意事项
    Remove a Submodule within git
    Quartz.NET
    Linux.net && mono
    系统整理qt笔记1
    串口通讯之rs232 c++版本
    串口通信 之 linux固定串口别名的两种方法
    系统整理qt笔记3
    串口通信+进制基础+位运算
    qt(二)
  • 原文地址:https://www.cnblogs.com/bruce1992/p/15059403.html
Copyright © 2011-2022 走看看