2024/08 7

[MySQL] 프로그래머스 흉부외과 또는 일반외과 의사 목록

문제: 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문- 결과는 고용일자순 내림차수, 이름 오름차순 정렬- 고용일자는 'YYYY-mm-dd' 형식 해결방법:1. WHERE 절에서 진료과가 'CS' or 'GS' 만 출력하도록 함2. ORDER BY 로 고용일자 DESC, 이름 ASC3. DATE_FORMAT() 함수로 일자 출력 양식 변경 예시 답안:SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMDFROM DOCTORWHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'ORDER BY HIRE_YMD DESC, DR_NAME ASC;

[SQL] 연습 2024.08.24

[MySQL] 프로그래머스 경기도에 위치한 식품창고 목록 출력하기

문제:FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회- 냉동시설 여부의 값이 NULL 인 경우 'N' 으로 출력- 창고는 경기도에 위치해야 함- ID 에 따른 오름차순 출력 해결방법:1. IFNULL() 함수를 사용해서 냉동시설 여부의 값이 NULL 인 경우 'N' 으로 출력하도록 처리2. WHERE 절에 LIKE 를 사용해서 이름에 '경기' 가 포함된 경우만 출력하도록 처리3. ORDER BY 로 오름차순 출력 예시 코드:SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N') AS FREEZER_YNFROM FOOD_WAREHOUSEWHERE WAREHOUSE_NAME LIKE ..

[SQL] 연습 2024.08.18

[SQL] 프로그래머스 특정 형질을 가지는 대장균 찾기

문제: 2번 형질을 보유하지 않으면서 1번이나 3번 형질을 보유하고 있는 대장균 개체 수(COUNT)를 출력 해결방법:1. ECOLI_DATA 테이블의 GENOTYPE 컬럼이 10진수이므로 CONV() 함수를 사용해서 2진수로 변환2. 이렇게 2진수로 변환한 GENOTYPE 은 뒤에서부터 1번, 2번, 3번 형질... 순으로 있으면 1로 표현된다3. 따라서 SUBSTRING() 함수를 사용하여 변환된 GENOTYPE 열의 -2번째 인덱스의 값이 1이 아니고(2번 형질을 보유하지 않음), 해당 열의 -1번째 또는 -3번째 인덱스의 값이 1인 행만 COUNT하면 된다. 코드 예시SELECT COUNT(*) AS COUNTFROM ECOLI_DATAWHERE NOT SUBSTRING(CONV(GENOTY..

[SQL] 연습 2024.08.17

[SQL] 프로그래머스 대장균들의 자식의 수 구하기

문제: 대장균 개체(ID)와 자식의 수(CHILD_COUNT)를 출력하는 SQL 작성- 자식이 없다면 자식의 수는 0으로 출력- 결과는 개체의 ID에 대해 오름차순 정렬 해결방법:1. ECOLI_DATA 테이블에서 'ID' 컬럼을 구한다 → 테이블에서의 전체 개체(ID) 출력2. ECOLI_DATA 테이블에서 GROUP BY 로 'PARENT_ID' 별 레코드 수 계산 → 각 PARENT 별 자식 수 카운트 가능3. 자식이 없는 ID 도 있으므로 1번 결과 테이블과 2번 결과 테이블을 LEFT OUTER JOIN 을 해서 모든 ID 에 대해 자식 수가 표시될 수 있도록 함.4. 이 때, 자식 수가 없는 경우 NULL 이므로 IFNULL() 규칙으로 처리해주면 된다. 코드 예시SELECT A.ID, IFN..

[SQL] 연습 2024.08.16