2016-04-26 152 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