一般网站空间多大,深圳网站建设厂家哪家好,三明市住房和城乡建设局网站,做网站多大目录 1、为什么需要汇总数据
2、聚集函数
#xff08;1#xff09;AVG函数
#xff08;2#xff09;COUNT函数
#xff08;3#xff09;MAX和MIN函数
#xff08;4#xff09;SUM函数
3、聚集不同值--DISTINCT
4、组合聚集函数
5、小结 博主用的是mysql8 DBMS…目录 1、为什么需要汇总数据
2、聚集函数
1AVG函数
2COUNT函数
3MAX和MIN函数
4SUM函数
3、聚集不同值--DISTINCT
4、组合聚集函数
5、小结 博主用的是mysql8 DBMS附上示例资料
百度网盘链接: https://pan.baidu.com/s/1XaWi3Y7hpXbs_uHq2cPI6Q
提取码: fpnx
1、为什么需要汇总数据
我们经常需要汇总数据而不用把它们实际检索出来为此 SQL 提供了专门的函数。使用这些函数SQL 查询可用于检索数据以便分析和报表生成。这种类型的检索例子有
确定表中行数或者满足某个条件或包含某个特定值的行数-- 比如统计订单数 获得表中某些行的和 -- 比如求取订单总金额 找出表列或所有行或某些特定的行的最大值、最小值、平均值。
上述例子都需要汇总表中的数据而不需要实际数据本身。因此返回实际表数据纯属浪费时间和处理资源更不用说带宽了。再说一遍我们实际想要的是汇总信息。
2、聚集函数 为方便这种类型的检索SQL 给出了 5 个聚集函数见表 9-1。这些函数能进行上述检索。与前一章介绍的数据处理函数不同SQL 的聚集函数在各种主要 SQL 实现中得到了相当一致的支持。 聚集函数aggregate function对某些行运行的函数计算并返回一个值。 函数说明AVG()返回某列的平均值COUNT()返回某列的行数MAX()返回某列的最大值正常使用的是日期和数值对于文本直接返回最后一行MIN()返回某列的最小值与MAX相反SUM()返回某列之和
1AVG函数
对过滤后的所有行的指定列取平均值获取多列的平均值需要使用多个AVG函数。 说明NULL 值 AVG()函数忽略列值为 NULL 的行。 -- 求所有产品平均价格
SELECT AVG(prod_price) AS avg_price
FROM products;-- 求供应商是1002的所有产品均价获取多列的平均值必须使用多个avg函数
SELECT AVG(prod_price) AS avg_price, MAX(prod_id) AS max_id
FROM products
WHERE vend_id 1002; -- WHERE子句仅过滤出vend_id为1002的行
2COUNT函数
COUNT()函数进行计数。可利用 COUNT()确定表中行的数目或符合特定条件的行的数目。 COUNT()函数有两种使用方式 使用 COUNT(*)对表中行的数目进行计数不管表列中包含的是空值NULL还是非空值。 使用 COUNT(column)对特定列中具有值的行进行计数忽略 NULL 值。 下面的例子返回 Customers 表中顾客的总数
-- count统计行数COUNT(*)统计该表所有行数即使某些行的某列值是NULL
SELECT COUNT(*) -- 14行
FROM products;SELECT COUNT(prod_price) -- 13行因为有一个price为NULL
FROM products; 通过COUNT可以统计满足某条件的行数比如我想统计拥有邮箱的顾客有多少个
-- 统计拥有邮箱的顾客有多少个
SELECT COUNT(cust_email)
FROM customers;说明NULL 值 如果指定列名则 COUNT()函数会忽略指定列的值为空的行但如果COUNT()函数中用的是星号*则不忽略。 3MAX和MIN函数
MAX()返回指定列中的最大值。MAX()要求指定列名如下所示
-- MAX函数一般找日期和数值对于文本直接返回该列排序后的最后一行
-- MIN函数与MAX函数相反
SELECT MAX(prod_id) AS max_id --
FROM products; 提示对非数值数据使用 MAX() 虽然 MAX()一般用来找出最大的数值或日期值但许多并非所有DBMS 允许将它用来返回任意列中的最大值包括返回文本列中的最大值。在用于文本数据时MAX()返回按该列排序后的最后一行。 说明NULL 值 MAX()函数忽略列值为 NULL 的行。 MIN()的功能正好与 MAX()功能相反它返回指定列的最小值。与 MAX()一样MIN()要求指定列名。
SELECT MIN(prod_price) AS min_price
FROM Products;其中 MIN()返回 Products 表中最便宜物品的价格。
4SUM函数
SUM()用来返回指定列值的和总计。下面举一个例子OrderItems 包含订单中实际的物品每个物品有相应的数量。可如下检索所订购物品的总数所有 quantity 值之和
-- 统计订单号为20005的所有物品个数
SELECT SUM(quantity) AS prod_quantity
FROM orderitems
WHERE order_num 20005;SUM()也可以用来合计计算值。在下面的例子中合计每项物品的item_price*quantity得出总的订单金额
-- SUM函数统计指定列值的和比如统计某订单的所有产品总数和总价格
-- 利用标准的算术操作符所有聚集函数都可用来执行多个列上的计算。
SELECT SUM(quantity) AS items_ordered, SUM(item_price * quantity) AS total_price
FROM OrderItems
WHERE order_num 20005; 提示在多个列上进行计算 利用标准的算术操作符所有聚集函数都可用来执行多个列上的计算。 说明NULL 值SUM()函数忽略列值为 NULL 的行。 如果对字符串列或者日期列进行SUM呢是不行哒~
-- 统计字符串之和是什么样子
SELECT SUM(prod_id)
FROM orderitems;
-- 结果是0-- 统计日期是什么样子
SELECT SUM(order_date)
FROM orders;
-- 返回100254754000000并不是时间戳哦如果想验证的话可以使用FROM_UNIXTIME()函数
3、聚集不同值--DISTINCT 对所有行执行计算指定 ALL 参数或不指定参数因为 ALL 是默认行为。 只包含不同的值指定 DISTINCT 参数。 下面想通过COUNT函数通过orderitems表统计总共有多少个订单。
/*ALL和DISTINCT参数在聚集函数中的作用聚集不同值上述中会对过滤后的数据中不为NULL的列值进行汇总其实默认有一个ALL参数对于相同的值可能不需要汇总比如我想在orderitem中查看有多少个订单聚集不同的值就需要使用DISTINCT参数
*/
SELECT COUNT(ALL order_num) -- 11个有重复订单
FROM orderitems;SELECT COUNT(DISTINCT order_num) -- 5个无重复订单
FROM orderitems; 注意DISTINCT 不能用于 COUNT(*) 如果指定列名则 DISTINCT 只能用于 COUNT()。DISTINCT 不能用于 COUNT(*)。类似地DISTINCT 必须使用列名不能用于计算或表达式。 说明其他聚集参数 除了这里介绍的 DISTINCT 和 ALL 参数有的 DBMS 还支持其他参数如支持对查询结果的子集进行计算的 TOP 和 TOP PERCENT。为了解具体的 DBMS 支持哪些参数请参阅相应的文档。 4、组合聚集函数
组合聚集函数就是SELECT语句可包含多个聚集函数这里注意取的列名不要和原表重复。
SELECT COUNT(*) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max, AVG(DISTINCT prod_price) AS price_avg
FROM Products;
5、小结
有时候我们只需要某写数据的一些汇总或者统计信息这时候不需要返回完整的数据节省资源。SQL支持五类聚集函数用于汇总数据分别是AVG、COUNT、MAX、MIN、SUMCOUNT(*)代表统计行数使用聚集函数时指定列名后对NULL值不进行统计MAX可对数值、日期进行取最大值对文本字符串只会返回最后一行MIN相反使用聚集函数时可以利用标准操作符执行多个列上的计算操作比如统计订单总金额聚集函数默认参数ALL代表取所有值包括相同需要对不同值汇总要指定DISTINCT参数组合聚集函数就是SELECT语句可包含多个聚集函数