- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题是在练习测试中提出的,我是 SQL 的新手。
问题是确定男女学生的平均分。此外,您还需要确定分数高于其性别平均分的学生人数。
表格说明:
=======================
| Field | Type |
=======================
| RollNo | int |
| Name | text |
| Gender | text |
| Score | text |
=======================
示例输入:
=========================================
| RollNo | Name | Gender | Score |
=========================================
| 101 | John | M | 85 |
| 102 | Tracy | F | 79 |
| 103 | Jake | M | 92 |
| 104 | Edgar | M | |
| 105 | Monica | F | 25 |
| 106 | Alicia | F | 50 |
| 107 | Yash | M | 68 |
=========================================
输出:
=================================
| Gender | Count | AvgScore |
=================================
| Female | 1 | 51 |
| Male | 2 | 81 |
=================================
输出说明:
有 4 名男学生,但有 1 名学生没有尝试,所以我们忽略该空值。
所以男性平均分是(85 + 92 + 68)/3 = 81.67(只取整数值)
只有2名学生的分数在81以上
这个我只是为了计算男性和女性的数量而尝试的:
SELECT
CASE WHEN S.Gender="M" then "Male" else "Female" END AS Gender
COUNT(Gender) as Count
FROM Students AS S
GROUP BY Gender
我不知道把 AVG
函数放在哪里。我应该使用嵌套查询吗?或者有什么我可以预先查询 avg 然后与每一行进行比较的东西吗?
最佳答案
您需要进行两次计算。首先是确定您需要的平均值。第二个是检索具有可用平均值的行。您需要的技巧是在第一次计算中使用子查询,并在第二次计算中使用 JOIN。
这是作为子查询制定的第一个计算。
SELECT Gender, AVG(Score) AvgScore
FROM scores
GROUP BY Gender
这需要像这样加入到您的详细信息中。
SELECT avg.Gender, avg.AvgScore,
SUM(scores.Score > avg.AvgScore) AboveAverageCount
FROM (
SELECT Gender, AVG(Score) AvgScore
FROM scores
GROUP BY Gender
) avg
JOIN scores ON avg.Gender = scores.Gender
GROUP BY Gender
看到这个。 https://www.db-fiddle.com/f/jTWnYkAzRfMVkdkM3ve68R/0
AVG()
函数自动省略 NULL 值。
我建议使用 SUM()
,因为 score > AvgScore
等比较表达式的值要么为 1 表示真,要么为 0 表示假。这是 MySQL 的一个怪癖,在其他 SQL 方言中不起作用。
关于mysql - 计算得分高于平均分的男性和女性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65253261/
PreStatement = myConnection.prepareStatement("" + "SELECT Game1.AVG(Score),S
现在我正在开发一个程序,该程序打印学生姓名、身份证号、考试成绩、平均分和成绩。由于某种原因,计算平均分数的方法存在问题。我尝试添加括号,但这也没有改变结果。这最终会弄乱成绩,因为成绩是用平均分计算的。
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有两个表 Fluids 和 CAS,我正在尝试使用 CAD 表中的平均分数更新相关表 Fluids。像这样的事情: UPDATE fluids INNER JOIN cas on cas.cas =
我正在为学校做一项作业,根据给定的输入计算平均测试成绩。当我输入“-1”时,它不会退出 do/while 循环。当我插入一个值时,计数不会增加,因此平均值无法正确计算。 Create a class
我有以下家庭作业。我们的老师教得不好,所以我需要额外的帮助。 编写一个 Java 程序,输入一名学生在 5 个测验中的 5 个分数。输出五个分数的总和和平均值。确定并显示最高和最低分数。 这就是我现在
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我是一名优秀的程序员,十分优秀!