MySQL通过从另一列中选择一个值来计算一列中的值

标签 mysql

我创建了一个表格,如下所示:

CREATE TABLE myRecord(stu_name VARCHAR(50),gender VARCHAR(50),level VARCHAR(50)); INSERT INTO myRecord VALUES('John','Male','Pre-Primary');
INSERT INTO myRecord VALUES('Jane','Female','Year 1');
INSERT INTO myRecord VALUES('Sue','Female','Year 2');

预期结果应该如下:

Male | Female | Level
----------------------
1 | 0 | Pre-Primary

但是当我运行下面的 SQL 时:

SELECT SUM(t.Male) AS Male,
SUM(t.Female) AS Female,
t.level
FROM
((SELECT SUM(gender='Male') as Male,
SUM(gender='Female') as Female,
CASE WHEN level='Pre-Primary'
THEN 'Pre-Primary'
END AS level
FROM myRecord
) t)
;

输出如下:

Male | Female | Level
----------------------
1 | 2 | Pre-Primary

它还计算了第一年和第二年。我只希望它计算级别=“学前类”的级别的每个性别。我尝试过使用 GROUP BY level 但它给了我相同的结果。我也尝试过,但它给了我一个错误。

有什么可行的方法吗?我已经为此工作了几天,但无法解决它,这有点令人失望。我希望有人能帮忙解决这个问题。

最佳答案

也许您需要一个 where 子句:

SELECT SUM(gender = 'Male') AS Male, SUM(gender = 'Female') AS Female, level
FROM myRecord
WHERE level = 'Pre-Primary';

我不明白为什么需要子查询。

关于MySQL通过从另一列中选择一个值来计算一列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26829114/

相关文章:

mysql - Servlet 或 Listener 中的数据库连接池?

MYSQL查询实例(QBE)

PHP CRON 电子邮件发送 CPU 密集型

php - INNER JOIN 跳过多表查询的一些结果

php - 显示结果不重复依赖其他表mysql

MySQL内连接问题

MySQL:在选择语句中自动增加临时列

php - jQuery 自动完成结果应显示为组合框

php - 为什么 mysql_fetch_object 在 class_name 为 null 时失败,即使这是默认值?

mysql - 数据库布局问题