zoukankan      html  css  js  c++  java
  • MySQL中的WITH ROLLUP

    MySQL中的WITH ROLLUP

    MySQL的扩展SQL中有一个非常有意思的应用WITH ROLLUP,在分组的统计数据的基础上再进行相同的统计(SUM,AVG,COUNT…),非常类似于Oracle中统计函数的功能,Oracle的统计函数更多更强大。

    下面演示单个司机以及所有司机的总行驶里程数和平均行驶里程数:

    mysql> select name,sum(miles) as 'miles/driver'

        -> from driver_log group by name with rollup;

    +-------+--------------+

    | name  | miles/driver |

    +-------+--------------+

    | Ben   |          362 |

    | Henry |          911 |

    | Suzi  |          893 |

    | NULL  |         2166 |

    +-------+--------------+

    4 rows in set (0.00 sec)

    mysql> select name,avg(miles) as driver_avg

        -> from driver_log group by name with rollup;

    +-------+------------+

    | name  | driver_avg |

    +-------+------------+

    | Ben   |   120.6667 |

    | Henry |   182.2000 |

    | Suzi  |   446.5000 |

    | NULL  |   216.6000 |

    +-------+------------+

    4 rows in set (0.00 sec)

    mysql> select name,sum(miles) as 'miles/driver',avg(miles) as driver_avg

        -> from driver_log group by name with rollup;

    +-------+--------------+------------+

    | name  | miles/driver | driver_avg |

    +-------+--------------+------------+

    | Ben   |          362 |   120.6667 |

    | Henry |          911 |   182.2000 |

    | Suzi  |          893 |   446.5000 |

    | NULL  |         2166 |   216.6000 |

    +-------+--------------+------------+

    4 rows in set (0.00 sec)

    在多个分组下WITH ROLLUP同样有效:

    mysql> select srcuser,dstuser,count(*) from mail group by srcuser,dstuser;

    +---------+---------+----------+

    | srcuser | dstuser | count(*) |

    +---------+---------+----------+

    | barb    | barb    |        1 |

    | barb    | tricia  |        2 |

    | gene    | barb    |        2 |

    | gene    | gene    |        3 |

    | gene    | tricia  |        1 |

    | phil    | barb    |        1 |

    | phil    | phil    |        2 |

    | phil    | tricia  |        2 |

    | tricia  | gene    |        1 |

    | tricia  | phil    |        1 |

    +---------+---------+----------+

    10 rows in set (0.05 sec)

    mysql> select srcuser,dstuser,count(*) from mail group by srcuser,dstuser with rollup;

    +---------+---------+----------+

    | srcuser | dstuser | count(*) |

    +---------+---------+----------+

    | barb    | barb    |        1 |

    | barb    | tricia  |        2 |

    | barb    | NULL    |        3 |

    | gene    | barb    |        2 |

    | gene    | gene    |        3 |

    | gene    | tricia  |        1 |

    | gene    | NULL    |        6 |

    | phil    | barb    |        1 |

    | phil    | phil    |        2 |

    | phil    | tricia  |        2 |

    | phil    | NULL    |        5 |

    | tricia  | gene    |        1 |

    | tricia  | phil    |        1 |

    | tricia  | NULL    |        2 |

    | NULL    | NULL    |       16 |

    +---------+---------+----------+

    15 rows in set (0.00 sec)

  • 相关阅读:
    简单的php写入数据库类
    php学习笔记――PHP 概述
    php模拟socket一次连接,多次发送数据的实现
    cmseasy安装之strict standards错误
    dropdownlist的用法
    PHP Checkbox获取选中项与
    用php过滤表单提交中的危险html代码
    ‘php.exe’ 不是内部或外部命令,也不是可运行的程序 或批处理文件
    my read_zodiac / 12shengxiao / shenxiao
    hd EMC Navisphere / SAN / NAS / DAS / OMV / openmediavault / FreeNAS / TrueNAS
  • 原文地址:https://www.cnblogs.com/Alight/p/3873159.html
Copyright © 2011-2022 走看看