第三章 聚合与排序

-- 第三章:聚合与排序
-- 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;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,724评论 0 10
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 8,042评论 5 115
  • By clicking to agree to this Schedule 2, which is hereby ...
    qaz0622阅读 1,606评论 0 2
  • 一、SQL速成 结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件...
    shadow雨轩阅读 574评论 0 3
  • 有人的地方就有江湖 来到steemit有两个月,发现自己除了一点steempower并没有其他收获,这让我实在有点...
    0946a9399b35阅读 550评论 10 3

友情链接更多精彩内容