美文网首页
第三章 聚合与排序

第三章 聚合与排序

作者: Curi | 来源:发表于2019-03-01 17:47 被阅读0次

    -- 第三章:聚合与排序
    -- 3-1
    SELECT COUNT()
    FROM Product;
    -- 3-1
    SELECT COUNT(purchase_price)
    FROM Product;
    -- 将包含NULL的列作为参数时,COUNT(
    )和COUNT(<列名>)的结果并不相同 整表()时是具体行数,而单独列的时候是null带来的0
    -- 其他聚合函数同理,会把NULL排除在外,但是COUNT(
    )除外,并不会排除NULL
    SELECT SUM(sale_price), AVG(sale_price), MAX(regist_date), MIN(regist_date)
    FROM Product;
    -- PS:MAX/MIN适用于所有数据类型的列,SUM/AVG函数只适用于数值类型的列
    -- 使用聚合函数删除重复值DISTINCT
    SELECT COUNT(DISTINCT product_type)
    FROM Product;

    -- 3-2对表进行分组
    -- GROUP BY子句,就相当于在第一列对后面所有数据进行了分组,以及注意顺序,group by在where后面/NULL会单独作为一类分类
    SELECT purchase_price, COUNT(*)
    FROM product
    WHERE product_type = '衣服'
    GROUP BY purchase_price;

    -- 易错情况,把除了聚合列也就是group by的列之外的列也放在,select里面,这样select就不知道改如何选取了,不然就在聚合函数内使用,不然就是常数
    -- 易错情况2,也不能使用别名,也就是as在select语句中,在group by的情况下
    -- 易错情况3,group BY的结果是随机的,不能排序;在where子句中不能使用聚合函数
    -- 只有SELECT//HABING//ORDER BY//能够使用聚合函数
    -- 想要删除选择结果中的重复数据时,用DISTINCT//想要计算汇总重复结果的值的时候用group BY

    -- 3-3为聚合结果指定条件
    -- HAVING必须在group by后面
    SELECT product_type, AVG(purchase_price)
    FROM Product
    GROUP BY product_type
    Having AVG(sale_price) > 2500;
    -- 聚合键所对应的条件写在where中比having中更好,具有更加明确的限定意义,类似于副词形容聚合键,而后面都是挑选范围,针对后续数据的内容用having

    -- 3-4对查询结果进行排序
    -- ORDER BY写在最后//ASC表示升序 sql默认升序//DESC表示降序//可以一列升序,剩下的降序//排序的时候 先写的先排//允许使用as的别名,而不是as本身
    SELECT product_id, product_name, sale_price, purchase_price
    FROM Product
    ORDER BY purchase_price, sale_price;
    -- 记住select的执行顺序是group by之后,order by之前//可以使用聚合函数//count(*)
    -- 可以用列的编号在order by里面使用,如 ORDER BY 3 DESC表示对第三列降序排列,但是不建议使用,因为一次性无法保存,读起来不知所云

    -- 练习题
    -- 3.1 顺序不对
    -- 3.2 ???
    SELECT product_type, SUM(sale_price), SUM(purchase_price)
    FROM Product
    GROUP BY product_type
    HAVING SUM(sale_price) >= SUM(purchase_price) * 1.5;
    -- 3.3
    SELECT *
    FROM Product
    ORDER BY regist_date DESC, sale_price;

    相关文章

      网友评论

          本文标题:第三章 聚合与排序

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