簡體   English   中英

選擇一列的 SUM 並獲取其他列的數量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM