sql题目练习——聚合函数

题目:

有 products 表,包含 product_id(产品编号,主键),product_name(产品名称),category(类别),price(价格),quantity(库存数量)。编写 SQL 查询每个类别的产品数量、平均价格和总库存数量,只显示产品数量大于 5 的类别信息,结果按平均价格升序排列。
解答:

按照category进行分组,统计不同组别的个数和其他数据(涉及到几个聚合函数的使用)

SELECT category, COUNT(product_id) AS product_count, AVG(price) AS average_price, SUM(quantity) AS total_quantity

FROM products

GROUP BY category

HAVING product_count > 5

ORDER BY average_price ASC;
相关知识点:

  1. 聚合函数
    COUNT():用于统计满足条件的行数。在 COUNT(product_id) 中,通过统计 product_id 的数量,实现对每个类别下产品数量的统计。因为 product_id 是主键,每行都唯一,所以能准确统计出每个类别中的产品个数。
    AVG():计算数值列的平均值。AVG(price) 用于计算每个类别中产品价格的平均值,通过对 price 列的数据进行平均计算,得出每个类别产品的平均价格。
    SUM():对数值列进行求和。SUM(quantity) 将每个类别下产品的 quantity(库存数量)相加,得到每个类别的总库存数量。
  2. GROUP BY 子句
    功能:GROUP BY category 按照 category(类别)对数据进行分组。它将 products 表中的数据依据 category 列的值进行划分,相同类别的数据归为一组。这样聚合函数就会分别对每个分组进行计算,而不是对整个表进行计算,从而得出每个类别的统计信息。例如,会分别计算电子产品类、服装类等各个类别的产品数量、平均价格和总库存数量。
  3. HAVING 子句
    作用:HAVING product_count > 5 用于对分组后的结果进行筛选。与 WHERE 子句不同,WHERE 是在分组之前对行进行筛选,而 HAVING 是在分组和聚合计算完成后,对分组结果进行筛选。这里筛选出产品数量大于 5 的类别,确保最终结果集中只包含满足此条件的类别信息。
  4. ORDER BY 子句
    功能:ORDER BY average_price ASC 按照平均价格(average_price,这是 AVG(price) 计算得出的别名)对查询结果进行升序排列。使最终显示的类别信息按照平均价格从低到高的顺序呈现,方便查看和分析数据。如果省略 ASC,默认也是升序排列,但显式写出可增强代码可读性。
相关推荐
IpdataCloud6 分钟前
AI智能体调用工具怎么核验来源IP?归属地、网络类型与代理风险识别(含Python代码)
数据库·python·tcp/ip
曹牧21 分钟前
Java:SQL 注入漏洞
数据库
程序员JerrySUN1 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
oradh1 小时前
Oracle Undo问题总结(ORA-600 [4xxx] 系列错误)
数据库·oracle
达梦数据1 小时前
DMDRS辅助表生成规则与作用
数据库·oracle
‎ദ്ദിᵔ.˛.ᵔ₎2 小时前
MySQL 表约束
数据库·mysql
Doris__HE2 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化
笃行3504 小时前
别拿MySQL数据库管理工具硬导:MySQL 迁 KingbaseES 的完整工具链
数据库
风哥2号5 小时前
数据库教程FGMT51‑PostgreSQL实例管理与参数文件
数据库·postgresql
蓝速科技5 小时前
桌面双屏翻译机量产调试:三类场景兼容性破局方案丨蓝速科技
运维·数据库·人工智能·科技·技术分享