面试题答案
一键面试在MongoDB中,可以使用以下聚合管道来实现该功能:
[
{
"$match": {
"age": {
"$gt": 18
}
}
},
{
"$group": {
"_id": null,
"averageScore": {
"$avg": "$score"
}
}
},
{
"$sort": {
"averageScore": -1
}
}
]
- $match阶段:使用
$match
操作符筛选出年龄大于18岁的学生文档。 - $group阶段:使用
$group
操作符对筛选后的文档进行分组,这里_id
设置为null
表示将所有文档分到一个组。在组内使用$avg
操作符计算score
字段的平均值,并将结果命名为averageScore
。 - $sort阶段:使用
$sort
操作符按照averageScore
字段进行降序排列。
如果是在其他数据库(如MySQL)中,假设表结构如下:
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT,
score DECIMAL(5,2)
);
可以使用以下SQL查询实现:
SELECT AVG(score) AS averageScore
FROM students
WHERE age > 18
ORDER BY averageScore DESC;
- WHERE子句:筛选出年龄大于18岁的学生记录。
- AVG函数:计算符合条件学生的平均成绩。
- ORDER BY子句:按照平均成绩降序排列。