美文网首页每天五行代码
MySQL必知必会12-14 汇总 分组 子查询

MySQL必知必会12-14 汇总 分组 子查询

作者: 废柴社 | 来源:发表于2018-01-13 20:10 被阅读12次

12 汇总数据-用聚集类函数

用于诸如:表中的行数、表中行组的和、列中的最大值平均值等。
(python的dataframe 在输出此类结果时有优势)

MySQL 五个聚集函数(其它还有:标准偏差聚集函数等)

  • AVG()
  • COUNT()
  • MAX()
  • MIN()
  • SUM()
SELECT AVG(alltotal) FROM yc_tmp;
SELECT MAX(alltotal),MIN(alltotal) FROM yc_tmp

# 若只聚集不同的值,用distinct-- p ;

13 分组和排序

13.1 分组 Group by

  • 可以跟多个变量,相当于嵌套分组;
  • 除聚集计算语句外,select的每列均需在group by 子句中给出。
  • Null 值会单独分为一组;
  • 顺序:group by 必需在where子句之后,order by 子句之前
SELECT province,Max(alltotal) as max_total
    ,AVG(alltotal) as avg_total FROM yc_tmp
group by province;

13.2 过滤分组 having

having过滤分组,而where只过滤行。
二者用法相同,功能也类似。having可以替代where的功能

SELECT province,Max(alltotal) as max_total
    ,AVG(alltotal) as avg_total FROM yc_tmp
group by province
having avg_total >1000;

也会有同时使用的情形。
另外:用where是先过滤,再分组计算,having是分组计算后再过滤

SELECT province,Max(alltotal) as max_total
    ,AVG(alltotal) as avg_total FROM yc_tmp
where province not in ('陕西','湖北')
group by province
having avg_total >1000
order by avg_total;
未排序结果

13.3 排序 order by

group by 出来的结果有时看起来是按分组排序的,但SQL并无此机制,故:若需要排序结果,必需用order by 指明。

排序结果

语句顺序:

Select
from
where
group by
having
order by
limit

14 子查询

子查询可用来:

  • 实现过滤,A表中的数据符合B表某些条件时显示;
  • 提供计算字段。

实现过滤的用法

一般顺序:先从B表中查询到需要的数据
再把该数据结果,放在下一个查询语句中使用。
子查询可以将这两个过程嵌套起来。

Select cust_id 
from orders
Where order_num in  ( select order_num 
                       from  orderitems
                        Where prod_id = 'TNT2') ;  

子查询可以多级嵌套,在使用时建议使用多行,并且适当缩进
注意效率,比对项较多时,速度会慢……

实现字段计算

即正常查询语句中的某一字段,是从其它表中查询过来的。

select cust_name,
         (select count(*) 
       from orders
       Where orders.cust_id = customers.cust_id ) as orders
from customers

相关文章

  • MySQL必知必会12-14 汇总 分组 子查询

    12 汇总数据-用聚集类函数 用于诸如:表中的行数、表中行组的和、列中的最大值平均值等。(python的dataf...

  • MySQL必知必会系列二

    读完MySQL必知必会系列一,我们可以进一步了解MySQL中的数据处理函数,分组查询,联结表,以及组合查询的相关内...

  • 03随风而逝

    写写今天学到的知识, 简单,少。 《mysql必知必会》:有 子查询,联结表,高级联结,组合查询,插入数据,更新和...

  • SQL 学习笔记

    SQL基础 参考书籍: 《SQL必知必会》 检索数据 过滤数据 函数 分组数据 子查询 简单联结 法一: 法二: ...

  • 【MySQL必知必会】学习笔记Day7

    【MySQL必知必会】学习笔记Day7&1.29&D14-16章&P90-112页 12、使用子查询 (1) 子查...

  • 【MySQL必知必会14】子查询

    示例中涉及的表、数据参考链接进行创建: https://www.jianshu.com/p/480d20bf237...

  • 【MySQL必知必会】学习笔记Day6

    【MySQL必知必会】学习笔记Day6&1.28&D13章&P83-89页 11、分组数据 (1) 数据分组 分组...

  • MySQL练手小计

    Mysql 必知必会 查询 检索多个列SELECT prod_id, prod_name, prod_pri...

  • 【MySQL必知必会】学习笔记Day8

    【MySQL必知必会】学习笔记Day8&1.31&D17章&P113-118页 15、组合查询 (1)组合查询 有...

  • SQL必知必会(子查询)

    一、什么是关联子查询,什么是非关联子查询 子查询虽然是一种嵌套查询的形式,不过我们依然可以依据子查询是否执行多次,...

网友评论

    本文标题:MySQL必知必会12-14 汇总 分组 子查询

    本文链接:https://www.haomeiwen.com/subject/vumcoxtx.html