• MySQL


    一个客户订单Orders 表:

    将每个客户订单分开,按照Customer分组,相同客户订单加在一起,

    select  customer ,SUM(OrderPrice) as totalPrice from Orders Group by Customer

    如果要求平均值,必须要考虑相同客户有多个订单,

    如:Customer='Bush'的客户有两个订单,

    计算平均值时,要将这两个订单计算在一个人身上,

    所以要先分组

    select AVG(B.totalPrice) as avgPrice from
    (select customer ,SUM(OrderPrice) as totalPrice from Orders Group by Customer) as B;

    结果:4525.00= 18100/4

    如果不分组的话:select AVG(OrderPrice) from Orders  

    结果:3016.6667=18100/6,此处多计算两个人

    -- 查询订单在平均值以上的客户
    select * from Orders where OrderPrice >(
    select AVG(B.totalPrice) as avgPrice from
    (select customer ,SUM(OrderPrice) as totalPrice from Orders Group by Customer) as B
    ) ;

    结果只有一个客户的订单>平均值:

    上面的求平均值还不完善,如果将序号为1的客户‘Bush’的OrderPrice改为2000,

    每个客户的订单和:

    它的平均值:4750,由上图可知大于4750的有Adams和Bush

    仍使用上面的求大于平均值的客户:

    从结果上可以看到少了Bush

    COUNT() 函数返回匹配指定条件的行数。

    1、COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

    select  count(column_name)  from orders;

    SELECT COUNT( Customer) AS CustomerNilsen FROM Orders where Customer='Bush';

    结果:2

    =======================================================

    SELECT COUNT( Customer) AS CustomerNilsen FROM Orders where Customer='Adams';

    结果:1

    =======================================================

    2、SQL COUNT(DISTINCT column_name) 语法

    COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

    SELECT COUNT(DISTINCT column_name) FROM table_name

    注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。

    结果为不重复客户的数目:

    SELECT COUNT(DISTINCT Customer) AS CustomerNilsen FROM Orders==》4

    3、SQL COUNT(*) 实例

    如果我们省略 WHERE 子句,比如这样计算所有数据

    SELECT COUNT(   * ) AS CustomerNumber FROM Orders ;==》6

    HAVING 子句

    在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

  • 相关阅读:
    GDB+QEMU调试内核模块(实践篇)
    排序算法的python实现
    Linux命令行相关
    操作系统与网络
    计算机组成原理
    有了自己的技术博客
    if 和 if else
    十效率换算成十六进制
    <<左移 >>右移 >>>无符号右移 &与运算 |或运算 ^异或运算 ~反码
    // &与 // |或 // ^异或 // !非 // &&短路 // ||短路
  • 原文地址:https://www.cnblogs.com/chengbao/p/4858238.html
Copyright © 2020-2023  润新知