在下面的查询中,我有一个包含两个字段course_name
和course_id
的基本表。我试图通过查询显示前三个课程的表格数量。我正在使用COUNT
,然后比较附加选择中的值以确定前三位,最后通过GROUP by course_id
显示结果。我得到一个MySQL语法问题。我怎样才能显示排名前三的课程的次数? FIDDLE查询以计算多次出现的前三项
SELECT course_name, course_id, COUNT(1) AS cnt
FROM courses
JOIN (SELECT distinct cnt cnt3
FROM courses
ORDER BY cnt DESC
LIMIT 2, 1) x
ON cnt >= cnt3
ORDER by cnt DESC
GROUP BY course_id
表模式:
CREATE TABLE courses
(`course_name` varchar(15), `course_id` int)
;
INSERT INTO courses
(`course_name`, `course_id`)
VALUES
('Math', 1),
('Science', 2),
('PHYS', 3),
('Study Hall', 4),
('History', 5),
('Social Studies', 6),
('Math', 1),
('PHYS', 3),
('Math', 1),
('Science', 2),
('Science', 2),
('Study Hall', 4),
('History', 5)
;
所需的结果:
+-------------+-------+
| Course_name | Count |
+-------------+-------+
| Math | 3 |
| Science | 3 |
| PHYS | 2 |
| Study | 2 |
| History | 2 |
+-------------+-------+
你是对的。我用我的查询矫枉过正。更简单和更好的解决方案。 – techAddict82