[英]SQL Query Involving Finding Most Frequent Tuple Value in Column
我有以下關系:
我試圖將以下內容表達為 SQL 查詢:
找到教過最多課程的講師的 ID 和姓名(即在教中擁有最多的元組)。
我的查詢
select ID, name
from teaches
natural join instructor
group by ID
order by count(*) desc
我知道這不正確,但我覺得我走在正確的軌道上。 為了回答這個問題,您需要處理這兩種關系,因此需要自然連接操作。 由於該問題詢問教授最多課程的講師,這告訴我我們正在嘗試計算每個講師 ID 在教授關系中出現的次數。 據我了解,我們希望計算不同的講師 ID,因此需要按命令分組。
不要使用自然連接:它們所做的只是依賴列名來決定哪些列跨表相關(它們不會像您想象的那樣檢查外鍵約束或類似的東西)。 這在本質上是不可靠的。
您可以使用常規inner join
:
select i.id, i.name
from teaches t
inner join instructor i on i.id = t.sec_id
group by i.id, i.name
order by count(*) desc
limit 1
筆記:
這假設列teaches.sec_id
與instructor.id
(我看不出可以使用哪個其他列)
我在查詢中添加了一個limit
子句,因為你說你想要頂級講師 - 語法可能因數據庫而異
始終使用它們所屬的表作為列名的前綴,以使查詢明確且易於理解
在聚合查詢中, select
子句中列出的所有非聚合列都應該出現在group by
子句中,這是一個很好的做法(也是許多數據庫的要求); 我將導師姓名添加到您的group by
子句中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.