2016-04-26 16 views
0

です。imはこのクエリを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; 

あなたがそれらをカウントして、唯一の最高数と1を表示したい場合は、私のクエリは、

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

あなたのクエリに 'LIMITを1 'に追加すべきですか? – Paul

+0

笑私はそれを考え出したと思う、これを達成するために限界1を使うのは問題ないの? – henryzo

+0

@Paul lolあなたは私と同じ時間に答えました。それはちょっと思っていたが、私はそれが大丈夫かどうか分からなかった。それは動作します。ありがとう! – 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