查询不同年龄的平均分数和将学生分为三个年龄段并求平均分

1、表结构

CREATE TABLE `stu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) COLLATE utf8mb4_0900_as_ci DEFAULT NULL,
  `score` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_as_ci;

2、图解

查询不同年龄的平均分数和将学生分为三个年龄段并求平均分_第1张图片

3、查询不同年龄的平均分数,输出平均分大于40分的学生年龄和平均分数,并按照age升序排列。

3.1、查询语句

SELECT age, AVG(score) FROM stu GROUP BY age HAVING AVG(score) > 40 ORDER BY age asc

3.2、图解

查询不同年龄的平均分数和将学生分为三个年龄段并求平均分_第2张图片

4、现在将学生分为三个年龄段,小于12岁的为【12岁以下】,12~13岁的为【12~13岁】,大于13岁的为【13岁以上】,要求统计每一组的平均分。

4.1、查询语句

SELECT CASE 
WHEN age< 12 THEN '12岁以下' 
WHEN age>= 12 AND age<=13 THEN '12~13岁' 
ELSE '13岁以上' END AS 'nld',
COUNT(1) AS '人数',
AVG(score) AS '平均分' 
FROM stu 
GROUP BY nld 
HAVING avg(score)

4.2、图解

在这里插入图片描述

你可能感兴趣的:(面试救火集,sql查询,面试复杂查询)