2017-03-23 1 views
1

は、私が正しいデータ同じGROUP BYを共有するSQLで複数のCOUNT文を使用するには?

SELECT COUNT (Section_ID) AS Sections 
FROM Section 
GROUP BY Location; 

を出力し、次の文も、私はそう

SELECT Location, COUNT(s.Section_ID) AS Sections, COUNT (e.Section_ID) AS Students 
FROM Section s, Enrollment e 
WHERE s.Section_ID = e.Section_ID 
GROUP BY Location; 
のように一緒にこれらの文を入れたときに、

SELECT COUNT (e.Section_ID) AS Students 
FROM Section s, Enrollment e 
WHERE s.Section_ID = e.Section_ID 
GROUP BY Location; 

しかし、正しいデータを出力し、この文を持っています

セクションと生徒は同じデータを共有するようになりました。どのようにこれらのステートメントを組み合わせることができますか?

答えて

0

最初にFROM句にカンマを使用しないでください。 常には、適切で明示的なJOIN構文を使用します。

第2に、COUNT()のことを覚えておいてください。非NULL値の数を数えます。あなたがやりたい

一つの方法は、COUNT(DISTINCT)を使用することです:

SELECT Location, COUNT(DISTINCT s.Section_ID) AS Sections, 
     COUNT(DIStINCT e.Student_Id) AS Students 
FROM Section s JOIN 
    Enrollment e 
    ON s.Section_ID = e.Section_ID 
GROUP BY Location; 

私は主キーがEnrollment何のためにあるのかについて推測する必要があります。私はStudent_IDを推測しています。

+0

正しいです、student_IDです。本当にありがとう、これはそれを完全に固定しました。 – HamHat

関連する問題