2016-04-26 119 views
0

即時通訊嘗試從sql書即時消息讀取中查找此查詢。SQL查詢與計數混淆

  1. 根據課程提供的次數查找最受歡迎課程的名稱。

我有查詢,它是列出的課程和計數每次提供了多少次,現在我的問題是如何滿足上述問題哈哈。我怎樣才能得到提供最多的課程? (即數據庫課程)

我的查詢是

SELECT 
    count(s.course_id) AS Times_Offered, 
    c.title 
FROM 
    sections s 
INNER JOIN courses c ON c.id = s.course_id 
GROUP BY c.title 
ORDER BY Times_Offered DESC; 

我的查詢顯示爲

times_offered title 
    3  Databases 
    3  Calculus 1 
    2  Compilers 
    2  Elocution 
    2  Acting 
    1  Topology 
+0

加上'LIMIT 1'到您的查詢? – Paul

+0

大聲笑我想我覺得它,使用限制1來實現這個好嗎? – henryzo

+0

@保羅哈哈,你和我同時回答。這正是我想的,但我不知道如果這是可以做的。但它的工作原理。謝謝! – henryzo

回答

0

如果你想指望他們,然後顯示一個只有數最高,試試這個:

SELECT COUNT(s.course_id) 
AS Times_Offered, c.title FROM sections s 
INNER JOIN courses c ON c.id=s.course_id 
GROUP BY c.title 
ORDER BY Times_Offered DESC 
LIMIT 1 
+0

ty,照顧我的問題。非常感激 – henryzo

1

因爲你想要最受歡迎的課程,你需要得到所有最高的課程。這會給你預期的答案。

SELECT 
count(s.course_id) AS Times_Offered, 
c.title 
FROM 
sections s 
INNER JOIN courses c ON c.id = s.course_id 
GROUP BY c.title 
ORDER BY Times_Offered DESC 
Having Times_Offered = 
SELECT max(t1.Times_offered) from 
(SELECT 
count(s.course_id) AS Times_Offered, 
c.title 
FROM 
sections s 
INNER JOIN courses c ON c.id = s.course_id 
GROUP BY c.title 
ORDER BY Times_Offered DESC) t1 

你的答案應該是

times_offered title 
3  Databases 
3  Calculus 1