SQL 코딩테스트 66

[프로그래머스 SQL] 부모의 형질을 모두 가지는 대장균 찾기 (SELECT) | MySQL

[프로그래머스 SQL] 부모의 형질을 모두 가지는 대장균 찾기 (SELECT) | MySQL하단의 목차를 클릭하여 이동할 수 있습니다 :) 1. 문제 2. 해답 3. 풀이        3-1. SELF JOIN        3-2. 비트연산 적용 (WHERE)1. 문제2. 해답SELECT B.ID, B.GENOTYPE, A.GENOTYPE AS PARENT_GENOTYPEFROM ECOLI_DATA AS A JOIN ECOLI_DATA AS B ON A.ID = B.PARENT_IDWHERE (A.GENOTYPE & B.GENOTYPE) = A.GENOTYPEORDER BY ID3. 풀이3-1. SELF JOIN 해당 문제는 자식 대장균(ID)의 GENOTYPE이 부모 대장..

[프로그래머스 SQL] 연도별 대장균 크기의 편차 구하기 (SUM, MAX, MIN) | MySQL

[프로그래머스 SQL] 연도별 대장균 크기의 편차 구하기 (SUM, MAX, MIN) | MySQL하단의 목차를 클릭하여 이동할 수 있습니다 :)1. 문제2. 해답3. 풀이1. 문제SELF JOIN해당 문제는 연도별로 MAX(SIZE_OF_COLONY)를 구하고 각 연도별 SIZE_OF_COLONY를 참감해 주어야 한다.문제는 GROUP BY로 연도별로 그룹화 할 경우 MAX(SIZE_OF_COLONY)는 구할 수 있으나 SIZE_OF_COLONY를 차감할 수가 없다. (집계가 아님).따라서 SELF JOIN문에 SUBQUERY를 사용하여 MAX(SIZE_OF_COLONY)를 추출한 뒤 다시 원본 테이블의 SIZR_OF_COLONY를 차감해준다.2. 해답SELECT YEAR(A.DIFFERENTI..

[프로그래머스 SQL] 분기별 분화된 대장균의 개체 수 구하기 (String, Date) | MySQL

[프로그래머스 SQL] 분기별 분화된 대장균의 개체 수 구하기 (String, Date) | MySQL하단의 목차를 클릭하여 이동할 수 있습니다 :)1. 문제 (+풀이)2. 해답1. 문제 (+풀이)GROUP BY QUARTER나의 풀이에서는 직접 변형을 하여 GROUP BY에 지정해 주었다. 직관적으로 이해하기 편하다 생각하였다.그러나 GROUP BY에는 YEAR, DATE, MONTH, QUARTER 등 날짜함수만 주면 알아서 DATE 필드에 적용하여 집계를 해주기도 한다.GROUP BY를 사용할 때에는 항상 GROUP BY에 지정한 필드 그 자체는 SELECT에서 사용할 수 있지만 다른 필드는 집계해야 하는것을 주의하자.2. 해답-- 코드를 작성해주세요SELECT CONCAT(QUARTER(DI..

[프로그래머스 SQL] 특정 물고기를 잡은 총 수 구하기 (SELECT) | MySQL

[프로그래머스 SQL] 특정 물고기를 잡은 총 수 구하기 (SELECT) | MySQL하단의 목차를 클릭하여 이동할 수 있습니다 :)1. 문제 (+풀이)2. 해답1. 문제 (+풀이)WHERE두 테이블을 FISH_TYPE으로 JOIN인 한 뒤에 FISH_NAME_INFO 테이블의 FISH_NAME에 조건을 주어 필터링하면 된다.2. 해답-- 코드를 작성해주세요SELECT COUNT(*) AS FISH_COUNTFROM FISH_INFO AS I JOIN FISH_NAME_INFO AS N ON I.FISH_TYPE = N.FISH_TYPEWHERE N.FISH_NAME = "BASS" OR N.FISH_NAME = "SNAPPER"# 두 테이블 > INNER JOIN# FISH_NAME_I..

[프로그래머스 SQL] 월별 잡은 물고기 수 구하기 (GROUP BY) | MySQL

[프로그래머스 SQL] 월별 잡은 물고기 수 구하기 (GROUP BY) | MySQL하단의 목차를 클릭하여 이동할 수 있습니다 :)1. 문제 (+풀이)2. 해답1. 문제 (+풀이)MONTH월별 출력을 위해 사용한다.문제가 아마도 MONTH를사용하지 않고 다른 방식으로 해결을 하려는 것을 방지하는 것 같다(?).해당하는 월이 없다면 출력되지 않도록 하는 것.9 이하의 월은 한 자리수로 출력할 것.2. 해답-- 코드를 작성해주세요SELECT COUNT(*) AS FISH_COUNT, MONTH(TIME) AS MONTHFROM FISH_INFOGROUP BY MONTH(TIME)ORDER BY MONTH# 월별 잡 > GROUP BY# 잡은 물고기의 수 > COUNT# 월을 출력 > DATE_FO..

[프로그래머스 SQL] 물고기 종류 별 잡은 수 구하기 (GROUP BY) | MySQL

[프로그래머스 SQL] 물고기 종류 별 잡은 수 구하기 (GROUP BY) | MySQL하단의 목차를 클릭하여 이동할 수 있습니다 :)1. 문제 (+풀이)2. 해답1. 문제 (+풀이)GROUP BY물고기 별로 출력할 때 사용한다.JOIN 이후에 동일하게 ALIAS를 활용하여 명시한다.중요한 점은 GROUP BY에 사용된 컬럼은 SELECE 시에 그냥 사용할 수 있지만 나머지 컬럼은 집계함수를 적용해야 한다.2. 해답-- 코드를 작성해주세요SELECT COUNT(I.FISH_TYPE) AS FISH_COUNT, N.FISH_NAMEFROM FISH_INFO AS I JOIN FISH_NAME_INFO AS N ON I.FISH_TYPE = N.FISH_TYPEGROUP BY ..

[프로그래머스 SQL] 노선별 평균 역 사이 거리 조회하기 (GROUP BY) | MySQL

[프로그래머스 SQL] 노선별 평균 역 사이 거리 조회하기 (GROUP BY) | MySQL하단의 목차를 클릭하여 이동할 수 있습니다 :)1. 문제 (+풀이)2. 해답1. 문제 (+풀이)ORDER BY ~ DESC 정렬을 할 때 ALIAS를 사용하면 결과는 맞지만 채점은 틀리다. 따라서 해당 문제는 SELECT에 사용된 집계를 그대로 사용해야 한다.CONCAT(~, "")데이터 값에 특정 문자열을 붙여 출력하는 등에 사용한다.현제 문제에서는 'km'를 붙여 출력해야 하기에 사용한다.2. 해답-- 코드를 작성해주세요SELECT ROUTE, CONCAT(ROUND(SUM(D_BETWEEN_DIST), 1), "km") AS TOTAL_DISTANCE, CONCAT(ROUND(AVG(D_BET..

[프로그래머스 SQL] 연도 별 평균 미세먼지 농도 조회하기 (String, Date) | MySQL

[프로그래머스 SQL] 연도 별 평균 미세먼지 농도 조회하기 (String, Date) | MySQL 하단의 목차를 클릭하여 이동할 수 있습니다 :)1. 문제 (+풀이)2. 해답1. 문제 (+풀이)WHERELOCATION2에서 '수원' 데이터만 추출.GROUP BY연도별로 그룹화하기 위해 GROUP BY에 YEAR()함수를 사용하여 그룹화 한다.2. 해답-- 코드를 작성해주세요SELECT YEAR(YM) AS YEAR, ROUND(AVG(PM_VAL1), 2) AS 'PM10', ROUND(AVG(PM_VAL2), 2) AS 'PM2.5'FROM AIR_POLLUTIONWHERE LOCATION2 = '수원'GROUP BY YEAR(YM)ORDER BY YEAR

[프로그래머스 SQL] 조건에 맞는 사원 정보 조회하기 (GROUP BY) | MySQL

[프로그래머스 SQL] 조건에 맞는 사원 정보 조회하기 (GROUP BY) | MySQL하단의 목차를 클릭하여 이동할 수 있습니다 :)1. 문제 2. 해답       2-1. SUBQUERY       2-2. NO SUBQUERY3. 풀이        3-1. JOIN 내부의 SUBQUERY        3-2. 순위를 추출할 때 사용하는 ORDER BY & LIMIT1. 문제 2. 해답2-1. SUBQUERY -- 코드를 작성해주세요SELECT G.TOTAL_SCORE AS SCORE, E.EMP_NO, E.EMP_NAME, E.POSITION, E.EMAILFROM HR_EMPLOYEES AS EJOIN (SELECT EMP_NO, ..

[프로그래머스 SQL] 조건에 맞는 개발자 찾기 (SELECT) | MySQL

[프로그래머스  SQL] 조건에 맞는 개발자 찾기 (SELECT) | MySQL하단의 목차를 클릭하여 이동할 수 있습니다 :)1. 문제 (+풀이)2. 해답1. 문제 (+풀이)JOIN을 하지 않고 SUBQUERY를 사용하는 이유위의 문제는 비트 연산자를 통해 JOIN을 하여 해결할 수도 있다.그러나 비트 연산자를 통해 JOIN을 할 경우 JOIN 결과 테이블이 애매(?)해지는 결과가 생기기 때문에 SUBQUERY를 두 번 사용하는 방법의 풀이를 결정하였다.애매하다는 의미는 예를 들어 SKILL_CODE 상으로는 C#과 Python이 포함되지만, JOIN결과 NAME 컬럼에서는 Python 혹은 C#만 표기되기에 어떤 기술이 포함되어 있는지 전체를 알 수 없다.2. 해답-- 코드를 작성해주세요SELECT ..