SQL:三 聚合与排序

时间:2020-10-05 22:20:49   收藏:0   阅读:41

对表进行聚合查询

聚合函数

计算表中数据的行数

-- 计算全部数据的行数 
SELECT COUNT(*)  
FROM Product;

 

计算NULL之外的数据的行数

-- 计算NULL之外的数据行数 
SELECT COUNT(purchase_price) 
FROM Product;

 

计算合计值

-- 计算销售单价的合计值 
SELECT SUM(sale_price) 
FROM Product;

 

计算平均值

-- 计算销售单价和进货单价的平均值 
SELECT AVG(sale_price), AVG(purchase_price) 
FROM Product;

 

计算最大值和最小值

-- 计算销售单价的最大值和进货单价的最小值 
SELECT MAX(sale_price), MIN(purchase_price) 
FROM Product;

 

使用聚合函数删除重复值(关键字DISTINCT)

-- 计算去除重复数据后的数据行数 
SELECT COUNT(DISTINCT product_type) 
FROM Product;

-- 先计算数据行数再删除重复数据的结果 
SELECT DISTINCT COUNT(product_type)  
FROM Product;

 

对表进行分组

GROUP BY子句

-- 使用GROUP BY子句进行汇总
SELECT <列名1>, <列名2>, <列名3>, …… 
FROM <表名> 
GROUP BY <列名1>, <列名2>, <列名3>, ……;

-- 按照商品种类统计数据行数 
SELECT product_type, COUNT(*)  
FROM Product 
GROUP BY product_type;

 

聚合键中包含NULL的情况

使用WHERE子句时GROUP BY的执行结果

-- 使用WHERE子句和GROUP BY子句进行汇总处理
SELECT <列名1>, <列名2>, <列名3>, …… 
FROM <表名> 
WHERE 
GROUP BY <列名1>, <列名2>, <列名3>, ……;

-- 同时使用WHERE子句和GROUP BY子句 
SELECT purchase_price, COUNT(*)  
FROM Product 
WHERE product_type = 衣服 
GROUP BY purchase_price;

 

与聚合函数和GROUP BY子句有关的常见错误

为聚合结果指定条件

HAVING子句

HAVING子句的构成要素

相对于HAVING子句, 更适合写在WHERE子句中的条件

 

对查询结果进行排序

ORDER BY子句

SELECT <列名1>, <列名2>, <列名3>, …… 
FROM <表名> 
ORDER BY <排序基准列1>, <排序基准列2>, ……

-- 按照销售单价由低到高(升序)进行排列 
SELECT product_id, product_name, sale_price, purchase_price
FROM Product ORDER BY sale_price;

 

指定升序或降序

-- 按照销售单价由高到低(降序)进行排列 
SELECT product_id, product_name, sale_price, purchase_price
FROM Product ORDER BY sale_price DESC;

 

指定多个排序键

-- 按照销售单价和商品编号的升序进行排序 
SELECT product_id, product_name, sale_price, purchase_price
FROM Product ORDER BY sale_price, product_id;

 

NULL的顺序

在排序键中使用显示用的别名

ORDER BY子句中可以使用的列

-- SELECT子句中未包含的列也可以在ORDER BY子句中使用 
SELECT product_name, sale_price, purchase_price FROM Product ORDER BY product_id; -- product_id 不显示在查询结果中

 

不要使用列编号

-- 通过列名指定 
SELECT product_id, product_name, sale_price, purchase_price  
FROM Product ORDER BY sale_price DESC, product_id; -- 通过列编号指定 SELECT product_id, product_name, sale_price, purchase_price
FROM Product ORDER BY 3 DESC, 1;

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!