次のデータベース設計があります。
Employee Table: Username, Name.....
Divisions Table: SapCode, DivisionShortcut, DivisionName
Quiz Table: QuizID, Title, IsSent, Description
UserQuiz Table: UserQuizID, QuizID, DateTimeComplete, Score, Username
(IsSent は、全従業員に送信されたクイズを参照するフラグです)
送信されたクイズのタイトルと各部門の合計参加者数を取得する次のクエリがあります。クエリは正常に機能しますが、小さなエラーがあります。検索結果は最後に送信したクイズから表示されます。クイズのタイトルは、クイズ 12、クイズ 11、クイズ 10 のようになっています。これで、(クイズ 9) が最後のクイズであることがわかります。ただし、最後に送信されたクイズは (クイズ 12) です。
では、このクエリを修正して正しい結果を得るにはどうすればよいでしょうか?
クエリ:
SELECT TOP (100) PERCENT COUNT(DISTINCT dbo.UserQuiz.Username) AS [Total Number of Participants], dbo.Divisions.DivisionShortcut, dbo.Quiz.Title
FROM dbo.employee INNER JOIN
dbo.UserQuiz ON dbo.employee.Username = dbo.UserQuiz.Username INNER JOIN
dbo.Quiz ON dbo.UserQuiz.QuizID = dbo.Quiz.QuizID INNER JOIN
dbo.Divisions ON dbo.employee.DivisionCode = dbo.Divisions.SapCode
WHERE (dbo.Quiz.IsSent = 1)
GROUP BY dbo.Divisions.DivisionShortcut, dbo.Quiz.Title
ORDER BY dbo.Quiz.Title DESC