[프로그래머스] SQL 20

[lv3] 없어진 기록 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/59042RIGHT OUTER JOIN 문제다.해당 쿼리는 오답을 받았다.SELECT ANIMAL_ID, O.NAMEFROM ANIMAL_INS I RIGHT JOIN ANIMAL_OUTS OUSING(ANIMAL_ID)WHERE I.NAME IS NULLORDER BY I.ANIMAL_ID  조건에서 NAME은 NULLABLE이므로 WHERE절에 사용하면 안됐다.   수정SELECT ANIMAL_ID, O.NAMEFROM ANIMAL_INS I RIGHT JOIN ANIMAL_OUTS OUSING(ANIMAL_ID)WHERE I.ANIMAL_ID IS NULLORDER BY I.ANIMAL_ID

[lv2] 이름에 el이 들어가는 동물 찾기

LIKE는 기본적으로 대소문자를 구분하지 않고 비교를 수행하나, 이는 사용중인 정렬 규칙에 따라 달라진다.e.g. utf8_general_ci에서 ci는 "case insensitive"를 의미하여 대소문자를 구분하지 않는 정렬을 나타냄 1. 오답SELECT ANIMAL_ID, NAMEFROM ANIMAL_INSWHERE NAME COLLATE utf8_bin LIKE '%el%' AND ANIMAL_TYPE = 'Dog'ORDER BY NAME 2. 정답SELECT ANIMAL_ID, NAMEFROM ANIMAL_INSWHERE NAME COLLATE utf8_general_ci LIKE '%el%' AND ANIMAL_TYPE = 'Dog'ORDER BY NAME  프로그래머스 환경에서는 기본적으로 ..

[lv4] 우유와 요거트가 담긴 장바구니

https://school.programmers.co.kr/learn/courses/30/lessons/62284#qna SELECT CART_IDFROM CART_PRODUCTSGROUP BY CART_IDHAVING EXISTS (SELECT * FROM CART_PRODUCTS WHERE NAME = 'Milk') AND EXISTS (SELECT * FROM CART_PRODUCTS WHERE NAME = 'Yogurt')ORDER BY CART_ID 1. 그룹화 하더라도 EXISTS는 모든 테이블에 대해 수행할 것이므로 수정해야 했다.2. SELECT문에 * 대신 COUNT(*)을 쓴다면 이는 COUNT가 0이어도 EXISTS TRUE 처리 됨에 주의해야 한다.3. 굳이 그룹화할 필요가 없었..

[lv3] 조건에 맞는 개발자 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/276034 SELECT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPERSWHERE BIN(SKILL_CODE) & (SELECT BIN(SUM(CODE)) FROM SKILLCODES WHERE NAME IN ('C#', 'Python')) > 0ORDER BY ID BIN()은 NUMBER을 2진수 값으로한 "문자열"을 반환한다. 따라서 이 쿼리는 문자열간의 비트 연산을 수행하므로 예상치 못한 값이 된다. 제출 후 문제가 생긴 이유를 찾고 정수의 비트연산으로 수정했다. 또한, 어차피 &연산간 일치하는 값이 없다면 0을 반환하게 되므로 " > 0"구문을 지웠다.WE..

[lv3] 대장균의 크기에 따라 분류하기 2

https://school.programmers.co.kr/learn/courses/30/lessons/301649 RANK()를 통한다면 구하는 과정이 난해했기에 활용할 수 있는 함수를 보고 시작했다.NETILE(n) => 기준 값에 대해 n개의 순위로 나눠 각각 등급 부여 SELECT ID, CASE WHEN NT = 4 THEN 'CRITICAL' WHEN NT = 3 THEN 'HIGH' WHEN NT = 2 THEN 'MEDIUM' ELSE 'LOW' END COLONY_NAMEFROM ECOLI_DATA A JOIN (SELECT ID, NTILE(4) OVER (ORDER BY SIZE_OF_COLONY) NT ..