SQL 코딩 테스트 (1)

stav·2024년 6월 25일
0
post-thumbnail

GPT 활용 제작

문제:

desert_weather 테이블에는 특정 사막에서 매일 기록된 저녁 온도 정보가 저장되어 있습니다. 이 테이블의 date 컬럼에는 날짜 정보가, temperature 컬럼에는 해당 날짜의 저녁 온도 정보가 기록되어 있습니다. 이 데이터를 이용하여 당일의 온도보다 3일 후의 온도가 더 낮은 날을 찾으세요. 결과는 다음 컬럼들을 포함해야 합니다:

  • today: 당일의 날짜(date)
  • another_day: 3일 후의 날짜(date)
  • temp: 당일의 온도(number)
  • temp_another_day: 3일 후의 온도(number)

가상의 데이터 생성:

CREATE TABLE desert_weather (
    date DATE,
    temperature FLOAT
);

INSERT INTO desert_weather (date, temperature) VALUES
('2023-01-01', -5.0),
('2023-01-02', -4.0),
('2023-01-03', -6.0),
('2023-01-04', -8.0),
('2023-01-05', -3.0),
('2023-01-06', -7.0),
('2023-01-07', -9.0),
('2023-01-08', -10.0),
('2023-01-09', -11.0);

solution:

SELECT 
    w1.date AS today,
    w2.date AS another_day,
    w1.temperature AS temp,
    w2.temperature AS temp_another_day
FROM 
    desert_weather w1
JOIN 
    desert_weather w2 ON DATE(w1.date) = DATE(DATE_ADD(w2.date, INTERVAL -3 DAY))
WHERE 
    w2.temperature < w1.temperature
ORDER BY 
    w1.date;

원도우 함수로도 풀 수 있지만, 셀프 조인 관련 공부를 하다가 날짜가 날짜를 참조하는 방법의 문제를 생각해봤다.

  • desert_weather 테이블을 w1w2라는 두 개의 별칭으로 사용하여 자기 결합을 수행

  • DATE(w1.date)DATE(DATE_ADD(w2.date, INTERVAL -3 DAY))와 같은 경우를 찾는다, w1의 날짜가 w2의 날짜보다 3일 전인 경우.

  • WHERE 절에서 w2.temperaturew1.temperature보다 낮은 경우만 선택

profile
Data Analyst Challenge

0개의 댓글

관련 채용 정보