Database-Design
使用關係代數計算列中的不同條目
所以我有一張類似於這張的桌子。每個使用者都發布了關於一個或多個酒店(A、B、C、D)的評論,但在不同的日期,因此即使一個人可能多次評論同一家酒店,也不會出現重複的元組。
我需要計算每個使用者僅使用關係代數評論過的****不同酒店的數量。我怎樣才能做到這一點?
顯示我使用的符號的範例:
R = ƔUser,COUNT(Hotel_reviewed)->Num_Reviews (InitialRelation- table 1)
將給出每個使用者的評論數量
結果應如下表:
顯示我使用的符號的範例:
R = ƔUser,COUNT(Hotel_reviewed)->Num_Reviews (InitialRelation- table 1)
將給出每個使用者的評論數量
除了更緊湊的語法(來自@McNets 的回答):
select User, count(distinct Hotel_Reviewed) HotelsReviewed from InitialRelation group by User;
我們還可以先進行投影以找到不同的 User、Hotel_Reviewed 對,然後聚合:
select User, count(Hotel_Reviewed) as Hotels_Reviewed from ( select distinct User, Hotel_Reviewed from InitialRelation ) as D group by User ;
這將我們引向關係代數符號:
R = Ɣ User, COUNT(Hotel_Reviewed) -> Hotels_Reviewed (π User, Hotel_Reviewed (InitialRelation)) -> D