SQL语句面试题
1、成绩表(学生名称,科目,成绩):查询出来所有科目成绩合格的学生,并且获取该学生最高分、最低分、平均分
解题思路:
首先要查询出所有成绩不合格的学生 SELECT name FROM scores WHERE score < 60
然后排除掉 not in
再依据条件进行分组 GROUP BY
最后添加查询条件 name,MAX(score) AS highest_score,MIN(score) AS lowest_score,AVG(score) AS average_score
SELECT
name,
MAX(score) AS highest_score,
MIN(score) AS lowest_score,
AVG(score) AS average_score
FROM
scores
WHERE
name NOT IN (
SELECT
name
FROM
scores
WHERE
score < 60
)
GROUP BY
name;
2、查询指定用户在过去12个月每个月的支付总额:
SELECT
DATE_FORMAT(payment_date, '%Y-%m') AS month,
SUM(amount) AS total_amount
FROM
payments
WHERE
user_id = '指定用户ID' AND
payment_date >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH)
GROUP BY
DATE_FORMAT(payment_date, '%Y-%m')
ORDER BY
DATE_FORMAT(payment_date, '%Y-%m');
详解:
DATE_FORMAT(payment_date, '%Y-%m') AS month:将支付日期格式化为YYYY-MM的格式,并命名为month。
SUM(amount) AS total_amount:计算每个月的支付总额,并命名为total_amount。
FROM payments:从payments表中查询数据。
WHERE user_id = '指定用户ID' AND payment_date >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH):筛选出指定用户在过去12个月内的支付记录。
GROUP BY DATE_FORMAT(payment_date, '%Y-%m'):按月份分组。
ORDER BY DATE_FORMAT(payment_date, '%Y-%m'):按月份排序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~