Skip to content
CatBus

Tag: sql

All the articles with the tag "sql".

PROGRAMMERS59038SQL
SELECT MIN(datetime) AS 시간
FROM animal_ins

문제에서 요구한 결과를 만들기 위해 쿼리에서 실제로 쓴 것들이다.

  • 사용한 함수: MIN()

최솟값 구하기

animal_ins 에서 MIN(datetime) 하나만 뽑는다. 가장 먼저 들어온 동물의 보호 시작 시각.

2025.04.02·1분·sql
PROGRAMMERS299305SQL
SELECT ecoli1.id AS ID, COUNT(ecoli2.id) as CHILD_COUNT
FROM ecoli_data AS ecoli1
LEFT JOIN
ecoli_data AS ecoli2
ON ecoli1.id = ecoli2.parent_id
GROUP BY ecoli1.id;

문제에서 요구한 결과를 만들기 위해 쿼리에서 실제로 쓴 것들이다.

  • 테이블 1회 LEFT JOIN 으로 두 테이블을 연결
  • GROUP BY 로 묶어서 집계
  • 사용한 함수: COUNT()

대장균들의 자식의 수 구하기

ecoli_data 를 자기 자신과 LEFT JOIN 해 부모-자식을 이어 붙이고, 자식 쪽을 COUNT 해 개체마다 자식 수를 센다.

2025.03.26·1분·sql
PROGRAMMERS59042SQL
SELECT outs.animal_id, outs.name
FROM animal_ins AS ins
RIGHT JOIN
animal_outs AS outs
ON ins.animal_id = outs.animal_id
WHERE ins.animal_id IS NULL

문제에서 요구한 결과를 만들기 위해 쿼리에서 실제로 쓴 것들이다.

  • 테이블 1회 JOIN 으로 두 테이블을 연결
  • WHERE 로 조건에 맞는 행만 남김

없어진 기록 찾기

animal_outs 기준 RIGHT JOIN 후 입양 기록 쪽 키가 NULL 인 행만 남긴다 — 들어온 기록 없이 나간 동물.

2025.03.26·1분·sql
PROGRAMMERS151141SQL
  • 테이블 2회 JOIN 으로 두 테이블을 연결
  • WHERE 로 조건에 맞는 행만 남김
  • ORDER BY 로 정렬 (내림차순 포함)
  • 서브쿼리를 사용
  • CASE WHEN 으로 조건에 따라 값을 분기
  • 사용한 함수: IFNULL(), ROUND()

자동차 대여 기록 별 대여 금액 구하기

DATEDIFF+1 로 대여 일수를 구하고 CASE 로 90일·30일·7일 구간을 나눠 요금제와 조인한다. 할인율을 적용해 대여 금액을 계산하는 문제.

2025.03.19·3분·sql
PROGRAMMERS299310SQL
SELECT year(differentiation_date) AS YEAR,
(
    SELECT MAX(size_of_colony) FROM ecoli_data
    WHERE year(differentiation_date) = year
) - size_of_colony AS YEAR_DEV,
ID
FROM ECOLI_DATA
ORDER BY YEAR, YEAR_DEV

문제에서 요구한 결과를 만들기 위해 쿼리에서 실제로 쓴 것들이다.

  • WHERE 로 조건에 맞는 행만 남김
  • ORDER BY 로 정렬
  • 서브쿼리를 사용
  • 사용한 함수: MAX(), YEAR()

연도별 대장균 크기의 편차 구하기

상관 서브쿼리로 같은 연도의 MAX(size_of_colony) 를 가져와 각 개체 크기와의 차를 구한다.

2025.03.19·1분·sql
PROGRAMMERS131123SQL
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE (FOOD_TYPE, FAVORITES) 
IN 
(SELECT FOOD_TYPE, MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE ) -- 음식 종류, 즐찾 최대 개수

ORDER BY FOOD_TYPE DESC

문제에서 요구한 결과를 만들기 위해 쿼리에서 실제로 쓴 것들이다.

  • WHERE 로 조건에 맞는 행만 남김
  • GROUP BY 로 묶어서 집계
  • ORDER BY 로 정렬 (내림차순 포함)
  • 서브쿼리를 사용
  • 사용한 함수: MAX()

즐겨찾기가 가장 많은 식당 정보 출력하기

(FOOD_TYPE, FAVORITES) 를 튜플째로 GROUP BY 결과와 IN 비교해, 음식 종류마다 즐겨찾기가 가장 많은 행을 고른다.

2025.03.11·1분·sql
PROGRAMMERS276035SQL
SELECT DISTINCT DEVELOPERS.ID, DEVELOPERS.EMAIL, DEVELOPERS.FIRST_NAME, DEVELOPERS.LAST_NAME
FROM DEVELOPERS, (SELECT CODE
                 FROM SKILLCODES
                 WHERE CATEGORY = 'Front End') as FRONTEND
WHERE DEVELOPERS.SKILL_CODE | FRONTEND.CODE = DEVELOPERS.SKILL_CODE
ORDER BY DEVELOPERS.ID

# SELECT DEVELOPERS.SKILL_CODE, FRONTEND.CODE, DEVELOPERS.SKILL_CODE | FRONTEND.CODE
# FROM DEVELOPERS, (SELECT CODE
#                  FROM SKILLCODES
#                  WHERE CATEGORY = 'Front End') as FRONTEND

FrontEnd 개발자 찾기

스킬코드를 비트마스크로 다룬다. `SKILL_CODE | CODE = SKILL_CODE` 로 프론트엔드 비트가 켜져 있는 개발자만 고른다.

2025.03.11·1분·sql
PROGRAMMERS133027SQL
SELECT J.FLAVOR
FROM FIRST_HALF F
    INNER JOIN (SELECT FLAVOR, SUM(TOTAL_ORDER) AS JULY_TOTAL_ORDER
                FROM JULY
                GROUP BY FLAVOR) J
        ON F.FLAVOR = J.FLAVOR
ORDER BY TOTAL_ORDER + JULY_TOTAL_ORDER DESC
LIMIT 3;

문제에서 요구한 결과를 만들기 위해 쿼리에서 실제로 쓴 것들이다.

  • 테이블 1회 JOIN 으로 두 테이블을 연결
  • GROUP BY 로 묶어서 집계
  • ORDER BY 로 정렬 (내림차순 포함)
  • LIMIT 3 으로 상위 3건만 조회
  • 서브쿼리를 사용
  • 사용한 함수: SUM()

주문량이 많은 아이스크림들 조회하기

7월 주문을 맛별로 SUM 한 서브쿼리를 상반기 테이블과 조인하고, 두 합을 더한 값으로 정렬해 상위 3개만 남긴다.

2025.03.02·1분·sql
PROGRAMMERS301647SQL
SELECT A.ID, A.GENOTYPE, B.GENOTYPE AS PARENT_GENOTYPE
FROM ECOLI_DATA A, ECOLI_DATA B
WHERE A.PARENT_ID = B.ID AND A.GENOTYPE & B.GENOTYPE = B.GENOTYPE
ORDER BY ID

문제에서 요구한 결과를 만들기 위해 쿼리에서 실제로 쓴 것들이다.

  • WHERE 로 조건에 맞는 행만 남김
  • ORDER BY 로 정렬

부모의 형질을 모두 가지는 대장균 찾기

자기 조인으로 부모 행을 붙이고 `A.GENOTYPE & B.GENOTYPE = B.GENOTYPE` 비트 연산으로 부모 형질을 모두 포함하는지 판정한다.

2025.03.02·1분·sql