전체등수와 학급등수를 산출하고 싶은데여
아래는 전체등수를 구하는 쿼리인데..
select 학생,학급,총점,
(select count(*) +1 from 점수 b where b.총점>a.총점) as '전체등수'
from 점수 a
학급등수라는 필드를 생성하고 싶은데 도저히 감이 안잡히네요
많은 지도 부탁드립니다
권장할만한 쿼리는 아니지만, 하셨던 방법과 유사한 쿼리로 만든다면, 다음과 같겠습니다.
SELECT
학생, 학급, 총점,
(SELECT COUNT(*)+1 FROM 점수 b WHERE b.총점 > a.총점) AS '전체등수',
(SELECT COUNT(*)+1 FROM 점수 c WHERE c.총점 > a.총점 AND c.학급 = a.학급) AS '학급등수'
FROM 점수 a
인덱스가 존재하지 않을 때, EXPLAIN 결과는 다음과 같습니다. 참고하세요.
+----+--------------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
| 1 | PRIMARY | a | ALL | NULL | NULL | NULL | NULL | 8 | |
| 3 | DEPENDENT SUBQUERY | c | ALL | NULL | NULL | NULL | NULL | 8 | Using where |
| 2 | DEPENDENT SUBQUERY | b | ALL | NULL | NULL | NULL | NULL | 8 | Using where |
3 rows in set (0.00 sec)