簡體   English   中英

MS-Access-唯一記錄

[英]MS-Access - unique records

我有一個包含很多學生的數據集,每個學生都有自己的學生編號。 每個學生都進行了多次測驗。 他們經常不止一次進行測驗。 我可以輕松地找出每個學生總共完成了多少個測驗,但我也想找出每個學生完成了多少個不同的獨特測驗。 例如,一個學生可能已經完成了6次測驗,但他們僅完成了3次獨特測驗(也許他們對每個獨特測驗進行了兩次)。 如何在Access中做到這一點?

您想在SQL查詢中使用DISTINCT謂詞。 由於我不知道您的桌子是什么樣子,所以我僅舉一個例子:

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

或者進入“查詢設計”窗口,右鍵單擊它,然后選擇“屬性”,“唯一值”,“是”。

擁有表名和列名將確實有幫助,因此可以輕松地將答案調整為更精確的設置。

在本例中,我們假設您有一個表,稱為Table1,表中有StudentQuiz列,quiz是所進行的測驗的名稱(唯一標識符)。

一個用於獲取學生進行的獨特測驗次數的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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