[英]select SUM of a column with fetching number of other columns
我有一张像
student_id student_name subject marks
1 A a_sub 10
1 A a_sub 10
2 A b_sub 5
3 A c_sub 20
4 B b_sub 10
从我想从哪里获取SUM(marks)
和所有其他列的 ex, SELECT student_name, subject, SUM(marks) AS marks FROM records ORDER BY student_id
。
结果应该是这样的:
student_name subject marks
A a_sub 45
B b_sub 10
我尝试使用GROUP BY
但它不起作用,因为student_name
具有不同的subject
值
如果您只想要“第一个”主题,则可以使用min()
并按名称分组。
SELECT student_name, min(subject) as subject, SUM(marks) AS marks
FROM records
GROUP BY student_name
ORDER BY student_name;
您可以使用此查询获取输出
select distinct b.student_name, b.marks, (select top 1 subject from [records] where b.student_name = student_name)
from [records] a
inner join (
SELECT student_name, SUM(marks) AS marks
FROM [records]
GROUP BY student_name) b on a.student_name = b.student_name
ORDER BY b.student_name
我也尝试过它的工作正常
您可以使用窗口函数:
select distinct r.student_name,
first_value(r.subject) over (partition by r.student_name order by r.student_id) as subject,
sum(r.marks) oever (partition by r.student_name) as marks
from records r;
简单聚合也可以:
select student_name, min(subject) as subject, sum(marks) as marks
from records r
group by student_name;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.