Interview AiBox logo

Interview AiBox 实时 AI 助手,让你自信应答每一场面试

download免费下载
2local_fire_department7 次面试更新于 2025-09-03account_tree思维导图

请编写一个SQL查询语句,要求使用分组查询、添加聚合函数,并将结果按升序排序。

lightbulb

题型摘要

SQL查询语句需要结合GROUP BY分组、聚合函数(如COUNT、SUM、AVG等)和ORDER BY排序。一个完整示例是:按产品类别分组,计算每个类别的销售总额和平均订单金额,并按销售总额升序排序。SQL执行顺序为:FROM→WHERE→GROUP BY→聚合函数→HAVING→SELECT→ORDER BY。

SQL查询语句:分组查询、聚合函数与排序

SQL基础知识

SQL(Structured Query Language)是用于管理关系数据库的标准语言。在数据分析中,分组查询、聚合函数和排序是常用的操作,可以帮助我们从数据中提取有意义的汇总信息。

分组查询(GROUP BY)

分组查询允许将数据按照一个或多个列进行分组,然后对每个组应用聚合函数。这是数据分析中非常强大的功能。

SELECT column1, column2, aggregate_function(column3)
FROM table_name
WHERE condition
GROUP BY column1, column2;

常用聚合函数

函数 描述 示例
COUNT() 计算行数 COUNT(*)
SUM() 计算总和 SUM(sales_amount)
AVG() 计算平均值 AVG(price)
MAX() 找出最大值 MAX(order_date)
MIN() 找出最小值 MIN(quantity)

排序(ORDER BY)

排序用于对结果集进行排序,可以按升序(ASC)或降序(DESC)排列。

SELECT column1, column2
FROM table_name
ORDER BY column1 ASC, column2 DESC;

完整示例

假设我们有一个销售数据库,包含订单信息,需要按产品类别分组,计算每个类别的销售总额和平均订单金额,并按销售总额升序排序。

SELECT 
    product_category,
    SUM(sales_amount) AS total_sales,
    AVG(sales_amount) AS average_order,
    COUNT(*) AS order_count
FROM 
    orders
WHERE 
    order_date >= '2023-01-01'
GROUP BY 
    product_category
HAVING 
    COUNT(*) > 5
ORDER BY 
    total_sales ASC;

代码解释

  • SELECT 子句:选择要显示的列,包括产品类别和三个聚合函数的结果
  • FROM 子句:指定数据来源表为 orders
  • WHERE 子句:过滤条件,只选择2023年以来的订单
  • GROUP BY 子句:按产品类别分组
  • HAVING 子句:对分组结果进行过滤,只保留订单数量大于5的类别
  • ORDER BY 子句:按销售总额升序排序结果

SQL查询执行流程

--- title: SQL查询执行流程 --- flowchart TD A[开始] --> B[FROM子句:指定表] B --> C[WHERE子句:过滤行] C --> D[GROUP BY子句:分组] D --> E[聚合函数计算] E --> F[HAVING子句:过滤分组] F --> G[SELECT子句:选择列] G --> H[ORDER BY子句:排序结果] H --> I[返回结果集] I --> J[结束]

更多示例

示例1:员工部门统计

-- 按部门统计员工数量和平均工资,并按员工数量升序排序
SELECT 
    department_id,
    COUNT(*) AS employee_count,
    AVG(salary) AS average_salary
FROM 
    employees
GROUP BY 
    department_id
HAVING 
    COUNT(*) > 10
ORDER BY 
    employee_count ASC;

示例2:产品销售分析

-- 按产品和年份统计销售情况,并按总销售额升序排序
SELECT 
    product_name,
    YEAR(order_date) AS order_year,
    SUM(quantity * unit_price) AS total_revenue,
    COUNT(DISTINCT customer_id) AS unique_customers
FROM 
    order_details
JOIN 
    orders ON order_details.order_id = orders.order_id
GROUP BY 
    product_name, YEAR(order_date)
ORDER BY 
    total_revenue ASC;

最佳实践

  1. 选择合适的分组列:确保分组列能够提供有意义的分组
  2. 使用HAVING过滤分组:不要将分组过滤条件放在WHERE子句中
  3. 合理使用聚合函数:根据分析需求选择适当的聚合函数
  4. 注意NULL值处理:聚合函数通常忽略NULL值,但COUNT(*)除外
  5. 为列使用别名:提高结果的可读性

常见错误

  1. 在SELECT子句中包含未分组的非聚合列
  2. 在WHERE子句中使用聚合函数(应使用HAVING)
  3. 忘记指定排序方向(默认为ASC)
  4. 在GROUP BY子句中使用列别名

参考资料

account_tree

思维导图

Interview AiBox logo

Interview AiBox — 面试搭档

不只是准备,更是实时陪练

Interview AiBox 在面试过程中提供实时屏幕提示、AI 模拟面试和智能复盘,让你每一次回答都更有信心。

AI 助读

一键发送到常用 AI

SQL查询语句需要结合GROUP BY分组、聚合函数(如COUNT、SUM、AVG等)和ORDER BY排序。一个完整示例是:按产品类别分组,计算每个类别的销售总额和平均订单金额,并按销售总额升序排序。SQL执行顺序为:FROM→WHERE→GROUP BY→聚合函数→HAVING→SELECT→ORDER BY。

智能总结

深度解读

考点定位

思路启发

auto_awesome

相关题目

请做一个自我介绍

自我介绍是面试的开场环节,需简洁有力地展示个人背景、技能经验与岗位匹配度。有效结构包括:开场问候、核心经历、技能展示、成就亮点、岗位认知、职业规划、公司了解和得体收尾。针对运维岗位,应突出Linux管理、网络配置、自动化部署等技术能力,并结合具体案例和量化成果。表达要真诚自然,时间控制在2-3分钟,展现自信和对公司的了解。

arrow_forward

请详细介绍一下你参与的项目

项目经验介绍应包括项目背景、个人角色、技术栈、工作内容、挑战与解决方案、成果收获以及与岗位的关联。通过具体案例展示技术能力和问题解决能力,突出与运维岗位相关的经验和技能,如系统部署、监控、故障排查、自动化运维等。同时体现团队协作和持续学习的态度。

arrow_forward

请介绍一下你的项目经验

在面试中介绍项目经验时,应选择与运维岗位最相关的项目,按"项目背景→个人职责→技术栈→难点与解决方案→项目成果"的结构进行介绍。重点突出自己在项目中的技术贡献、解决问题的能力以及与运维岗位相关的经验。通过具体案例展示自己的技术实力、学习能力和团队协作精神,并将项目经验与应聘岗位联系起来,展示自己的匹配度和价值。

arrow_forward

请进行自我介绍并详细介绍你参与过的项目

自我介绍和项目经验是面试的重要环节。优秀的自我介绍应简洁明了地展示个人背景、专业技能和职业规划;项目经验介绍则应选择与岗位相关的项目,详细说明项目背景、个人职责、使用技术、解决方案和项目成果。回答时应突出与岗位相关的技能和经验,展现专业能力和解决问题的能力,同时保持自信和真诚的态度。

arrow_forward

请详细介绍你简历中提到的项目,包括实现细节和遇到的问题

面试中介绍项目经验时,应选择与运维岗位最相关的项目,按照"项目背景-个人职责-技术实现-遇到问题-解决方案-项目成果"的结构进行介绍。重点突出个人贡献、技术细节和解决问题的能力,用数据量化项目成果。示例包括校园服务器集群自动化运维平台和基于Kubernetes的微服务部署与运维两个项目,展示了监控模块设计、CI/CD流水线构建、故障排查等运维核心能力。

arrow_forward

阅读状态

阅读时长

4 分钟

阅读进度

8%

章节:13 · 已读:1

当前章节: SQL基础知识

最近更新:2025-09-03

本页目录

Interview AiBox logo

Interview AiBox

AI 面试实时助手

面试中屏幕实时显示参考回答,帮你打磨表达。

免费下载download

分享题目

复制链接,或一键分享到常用平台

外部分享