아래 쿼리에서 두 개의 필드 course_name
및 course_id
이있는 기본 테이블이 있습니다. 나는 그들이 테이블에 나타나는 시간의 양에 의해 상위 3 개의 코스를 질의를 통해 보여 주려고 노력하고 있습니다. 나는 COUNT
을 사용하고 있는데, 추가 셋의 값을 비교하여 상위 3 개를 결정하고 결과를 으로 표시합니다. mysql 구문 문제가 발생했습니다. 테이블에 나타나는 시간과 함께 상위 3 개의 코스를 어떻게 표시 할 수 있습니까? 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