2015-06-25 126 views
0

我有一個擁有很多學生的數據集,每個學生都有自己的學號。每個學生都進行了多次測驗。他們經常不止一次地進行測驗。我可以很容易地找出每個學生已經完成了多少次測驗,但我也想知道每個學生做了多少次不同的獨特測驗。例如,一名學生可能已經完成了6次測驗,但他們只完成了3次獨特的測驗(也許他們每次進行了兩次獨特的測驗)。我如何在Access中執行此操作?MS-Access - 獨特記錄

+0

謝謝您的意見。爲了更清楚一點,我想在左欄中顯示所有學生ID,並完成第2和第3欄中完成的測驗次數和獨特的測驗(即,我不打算爲一個特定的學生ID) – Paul

+0

我添加了一個編輯到我的答案,使用您的列和表名稱,並具有所有3個請求的列。 – Bryan

回答

0

這將真正有助於獲得表名和列名,這樣可以更輕鬆地對答案進行罰款調整。

對於這個例子的目的,我們將假定你有一臺,調用Table,它有已採取的測驗列學生測驗,測驗是名稱(唯一標識符)。

一個SQL得到的唯一的計數測驗學生了,應該是這樣的:

Select a.Student, count(a.Quiz) as QuizCount 
From (Select Distinct Student, Quiz from Table1) as a 
Group by a.Student 

(Select Distinct Student, Quiz from Table1)在這種情況下稱爲子查詢,這意味着它是內查詢查詢。這個子查詢的目的是得到一個結果表,然後你可以從中得到一個數字,只有一個學生完成的關鍵字Distinct完成的獨特測驗。

as aas QuizCount被稱爲混疊。表和列可以是別名,通常用於不必重複鍵入長表名,增加查詢的可讀性,命名聚合函數的結果列,如count,avg,sum等,因爲如果未提供別名,則聚合函數的結果列名稱與EXR1000類似。

最後,結果集中不是聚合函數結果的任何列(如a.Student)需要放在Group By語句中。

編輯:使用版本我們提供的表/列名:

Select b.StudentID, Count(b.QuizName) as TotalQuizCount, c.UniqueQuizCount 
From [combine V2] as b 
Inner Join (SELECT [a].StudentID, Count([a].QuizName) as UniqueQuizCount 
from (SELECT Distinct StudentID, QuizName 
FROM [combine V2]) as a 
Group By a.StudentID) as c ON b.StudentID = c.StudentID 
Group By b.StudentID, UniqueQuizCount 
+0

謝謝你的回覆。我的表名是:combine v2。我的列名是:StudentID和QuizName。如上所述:我想在左列中顯示所有學生ID,並在第2和第3列中完成測驗的次數和完成的獨特測驗(即,我不打算爲某個特定項目提供數據學生證) – Paul

+0

哇布賴恩!這就像一個魅力。謝謝你,謝謝你,謝謝你! – Paul

0

您想在SQL查詢中使用DISTINCT謂詞。因爲我不知道你的表是什麼樣子,我只是想給你一個例子:

SELECT DISTINCT NAME_OF_QUIZ FROM MYTABLE WHERE STUDENTID=? 
0
SELECT DISTINCT tbl_Quizzes.Student, tbl_Quizzes.Quiz 
FROM tbl_Quizzes; 

或進入查詢設計窗口中,右鍵單擊它並選擇屬性,獨特值,是的。