728x90
1. 테이블 생성
CREATE TABLE SubjectScores (
id INT PRIMARY KEY AUTO_INCREMENT,
student VARCHAR(100) NOT NULL,
subject VARCHAR(50) NOT NULL,
score INT NOT NULL,
semester VARCHAR(20),
year INT
);
2. 샘플 데이터 입력구문
INSERT INTO SubjectScores (student, subject, score, semester, year) VALUES
('Kim Min-soo', 'English', 85, '1st Semester', 2024),
('Kim Min-soo', 'Math', 90, '1st Semester', 2024),
('Kim Min-soo', 'Science', 80, '1st Semester', 2024),
('Lee Young-hee', 'English', 78, '1st Semester', 2024),
('Lee Young-hee', 'Math', 88, '1st Semester', 2024),
('Lee Young-hee', 'Science', 92, '1st Semester', 2024),
('Park Cheol-soo', 'English', 95, '1st Semester', 2024),
('Park Cheol-soo', 'Math', 85, '1st Semester', 2024),
('Park Cheol-soo', 'Science', 88, '1st Semester', 2024),
('Kim Ji-young', 'English', 82, '1st Semester', 2024),
('Kim Ji-young', 'Math', 79, '1st Semester', 2024),
('Kim Ji-young', 'Science', 91, '1st Semester', 2024);
3. 학생별 과목별 평균과 랭킹 구하는 쿼리문
SELECT student, subject, AVG(score) AS average_score,
RANK() OVER (PARTITION BY subject ORDER BY AVG(score) DESC) AS rank
FROM SubjectScores
GROUP BY student, subject;
728x90
'MYSQL' 카테고리의 다른 글
쿼리문에서 필드 합쳐서 가져오기 CONCAT (1) | 2024.11.20 |
---|---|
insert 후 자동 증가 키 값 가져오기 (0) | 2024.11.19 |
mysql 리액트 만나이 계산 (0) | 2024.11.11 |
쿠폰일자 사용여부 체크 쿼리문 true false 로 받아 오기 (0) | 2024.11.08 |
mysql 날짜 비교 현재 일자 보다 작은 데이터 select query (0) | 2023.12.20 |