MySQL选择与聚合函数
我有一个简单的疑问:MySQL选择与聚合函数,mysql,Mysql,我有一个简单的疑问: SELECT score,subject_name FROM exams_scores,subjects WHERE (admission_no = 2771) AND(subjects.subject_code = exams_scores.subject_code) 这给了我:所有5条记录都如预期的那样。 如果我这样做: 我只得了第一分。如果我想得到所有分数加上他们的总和,我应该使用什么 样本数据 admission_no subjec
SELECT
score,subject_name
FROM exams_scores,subjects
WHERE (admission_no = 2771) AND(subjects.subject_code = exams_scores.subject_code)
这给了我:所有5条记录都如预期的那样。
如果我这样做:
我只得了第一分。如果我想得到所有分数加上他们的总和,我应该使用什么
样本数据
admission_no subject score
1000 Engligh 80
1000 Math 90
1000 Physics 70
2000 English 45
2000 Math 80
2000 Physics 90
我正在努力获得某一特定录取的所有分数加上总分数
因此,我预计:
入场证号码:1000,
得分:80,90,70
总计:240您的第二次查询将所有行聚合为一个总和。这就是它应该做的。 为了保留行,一种方法是在
select
语句中添加并创建总和,如下所示:
SELECT
score,
subject_name,
(SELECT SUM (score) FROM exams_scores,subjects WHERE (admission_no = 2771) AND (subjects.subject_code = exams_scores.subject_code)) AS sum
FROM exams_scores,subjects
WHERE (admission_no = 2771) AND(subjects.subject_code = exams_scores.subject_code)
像这样,总和被追加到每一行
编辑:为了添加总计行,
union
语句可以执行以下操作:
SELECT
score,
subject_name,
(SELECT SUM (score) FROM exams_scores,subjects WHERE (admission_no = 2771) AND (subjects.subject_code = exams_scores.subject_code)) AS sum
FROM exams_scores,subjects
WHERE (admission_no = 2771) AND(subjects.subject_code = exams_scores.subject_code)
UNION
SELECT (0, 'Total', (SELECT SUM(... ... ...))
这应该可以,但我没有测试的细节。最后只有一行,而不是每组一行
使用
union
,您始终需要相同的列数、名称和类型。还有一点可能是,为了添加标题、格式等,最好离开SQL,使用PHP结构。听起来你在寻找一个可以使用联合的汇总
SELECT score,subject_name
FROM exams_scores,subjects
WHERE (admission_no = 2771) AND(subjects.subject_code = exams_scores.subject_code)
UNION ALL
SELECT sum(score), 'Total'
FROM exams_scores
WHERE (admission_no = 2771)
最后添加
按主题分组\u name
。你能分享一些样本数据和你想要得到的结果吗?我刚刚添加了一些数据,你不想要主题名称吗?我可以得到,我现在只需要总数。我已经添加到我的答案中,请参见上文。在对联合查询进行一些修改后工作。再次感谢
SELECT score,subject_name
FROM exams_scores,subjects
WHERE (admission_no = 2771) AND(subjects.subject_code = exams_scores.subject_code)
UNION ALL
SELECT sum(score), 'Total'
FROM exams_scores
WHERE (admission_no = 2771)