SELECT subject, AVG(score) AS avg_score, CASE WHEN AVG(score) >= 90 THEN '优秀' WHEN AVG(score) >= 80 THEN '良好' WHEN AVG(score) >= 60 THEN '及格' ELSE '不及格' END AS grade FROM scores GROUP BY subject HAVING SUM(CASE WHEN score >= 60 THEN 1 ELSE 0 END) / COUNT(*) >= 0.8; 对么
时间: 2024-04-05 13:33:24 浏览: 117
是的,这个SQL语句的语法是正确的,可以在Hive中执行。这个SQL语句的作用是:从学生成绩表中统计每个科目的平均分,并将平均分分为优秀、良好、及格和不及格四个等级。然后,对及格成绩率大于等于80%的科目进行筛选,并输出结果。其中,使用了AVG函数、CASE WHEN语句、SUM函数、COUNT函数以及HAVING语句等SQL关键字和函数。
相关问题
SELECT subject, AVG(score) AS avg_score, CASE WHEN AVG(score) >= 90 THEN '优秀' WHEN AVG(score) >= 80 THEN '良好' WHEN AVG(score) >= 60 THEN '及格' ELSE '不及格' END AS grade FROM scores GROUP BY subject HAVING SUM(CASE WHEN score >= 60 THEN 1 ELSE 0 END) / COUNT(*) >= 0.8;
这是一个 SQL 查询语句,用于计算各科目的平均分和成绩等级,并筛选出及格率达到80%以上的科目。具体来说,它会从成绩表(scores)中选出每个科目(subject),计算该科目的平均分(avg_score),并根据平均分计算出成绩等级(grade)。然后,它会筛选出及格率(即分数大于等于60分的人数占总人数的比例)达到80%以上的科目。
3、展示此业务部所有人员基本信息、各科成绩、平均成绩,成绩等级(优秀(成绩>=90分)、良好(70<=成绩<90)、及格(60<=成绩<70)、不及格(成绩<60) ),并按照平均成绩降序排列的sql语句
假设业务部人员信息存储在表名为 `employees` 中,各科成绩存储在表名为 `scores` 中,其中 `employees` 表中有员工的基本信息,包括员工编号 `emp_id`,员工姓名 `emp_name`,员工性别 `emp_gender`,员工年龄 `emp_age` 等字段,`scores` 表中有员工的各科成绩,包括员工编号 `emp_id`,科目名称 `subject_name`,科目成绩 `score` 等字段。
以下是按照平均成绩降序排列的 SQL 语句:
```
SELECT e.emp_id, e.emp_name, e.emp_gender, e.emp_age,
AVG(s.score) AS avg_score,
CASE WHEN AVG(s.score) >= 90 THEN '优秀'
WHEN AVG(s.score) >= 70 THEN '良好'
WHEN AVG(s.score) >= 60 THEN '及格'
ELSE '不及格' END AS score_level
FROM employees e
JOIN scores s
ON e.emp_id = s.emp_id
GROUP BY e.emp_id, e.emp_name, e.emp_gender, e.emp_age
ORDER BY avg_score DESC;
```
该 SQL 语句使用了 `JOIN` 操作将 `employees` 表和 `scores` 表连接起来,计算出每个员工的平均成绩并按照降序排列。使用 `CASE` 语句将平均成绩转换成成绩等级。
阅读全文