250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 데이터리안실전반
- SQL
- leetcode문풀
- 오블완
- 코테준비
- 활성사용자수
- 데벨챌
- leetcode
- levle1
- with절
- 파이썬문풀
- 약수구하기
- 티스토리챌린지
- sql50
- 데이터리안넥스트레벨챌린지
- SQL고득점KIT
- join
- 데이터리안
- SQL테스트
- 서브쿼리
- 프로그래머스
- 그로스해킹
- 파이썬
- 프로그래머스문풀
- 셀프조인
- mysql
- sql문풀
- 위키독스
- 문풀
- 윈도우함수
Archives
- Today
- Total
꿈은 데이터분석가, 취미는 계획
[MY SQL] id의 순서 변경하기 본문
728x90
출처: [leetcode - SQL50] : 626. Exchange Seats
문제: 연속된 학생의 좌석 ID를 교환(학생 수가 홀수인 경우 마지막은 교환없이 반환)
1. 홀수, 짝수 이용하기
1) id를 2로 나눴을 때 나머지를 기준으로 홀수면 id +1을, 짝수면 id-1을 해서 순서를 변경
2) id가 max값인 경우 else로 그대로 출력
SELECT
CASE
WHEN id % 2 = 1 AND id + 1 <= (SELECT MAX(id) FROM Seat) THEN id + 1
WHEN id % 2 = 0 THEN id - 1
ELSE id
END AS id,
student
FROM Seat
ORDER BY id;
2. IF 활용하기
1번과 동일하게 홀수, 짝수를 활용하는 방법
=> case when이 아닌, if를 활용하는 방법
SELECT
IF(ID % 2 = 0, ID - 1, IF(ID = (SELECT MAX(ID) FROM SEAT), ID, ID + 1)) AS ID,
STUDENT
FROM SEAT
ORDER BY ID;
728x90
'SQL > SQL문풀' 카테고리의 다른 글
[프로그래머스: SQL 고득점 kit] 서울 매장의 리뷰 평균 구하기 (0) | 2025.02.06 |
---|---|
[MY SQL] 영화를 가장 많이 본 사람과 평점이 가장 높은 영화 찾기 (0) | 2025.02.05 |
[MY SQL] 카테고리별 집계하기 (0) | 2025.02.03 |
[MY SQL] 3회 연속인 숫자 구하기 (0) | 2025.01.17 |
[MY SQL] 모든 제품을 구매한 고객 조회하기 (0) | 2025.01.16 |