2017-07-08 3 views
0

enter image description here 私は、studentidと各学生が支払った総費用を表示し、studentidに基づいて結果を昇順で並べ替えるためのクエリを書く必要があります。Distinctを使用していても、このSQL文を実行している間に、単一のstudentidの値が合わないのはなぜですか?

studidが1回だけ表示されるようにDistinctを使用しましたが、期待される出力が得られません。

マイコード:

select distinct s.studid,c.fees as total_fees from Student s join 
Registration r on s.studid=r.studid join Course c on r.courseid=c.courseid 
group by s.studid,c.fees order by s.studid; 

マイ出力:

enter image description here

予想される出力:

enter image description here

答えて

1

あなたが登録に参加します。 それは学生と登録ごとに1つのレコード、あなたが望むものである を与えるでしょう。 これで別名を呼び出すと、そのレコードのうちの1つのみを取得することを意味します。

あなたがしたいことは、それらの費用を合計し、学生1人につき結果をグループ化し、スタディによって注文することです。

SELECT s.studid, SUM(c.fees) as total_fees FROM student s 
JOIN registration r ON s.studid = r.studid 
JOIN course c ON r.courseid=c.courseid 
GROUP BY s.studid 
ORDER BY s.studid; 
1

あなたは学生証の明確な組み合わせによって照会され、代わりにの手数料は料を合計:

SELECT s.studid, SUM(c.fees) as total_fees 
FROM  student s 
JOIN  registration r ON s.studid = r.studid 
JOIN  course c ON r.courseid=c.courseid 
GROUP BY s.studid 
ORDER BY s.studid ASC 
関連する問題