문제 설명

이번 포스팅에서는 STATION 테이블에서 가장 짧은 도시 이름가장 긴 도시 이름을 찾는 SQL 문제를 다룹니다. 단, 조건은 다음과 같습니다:

  1. 가장 짧은 도시 이름과 그 길이를 구합니다.
    • 만약 이름이 같은 경우, 알파벳 순으로 가장 앞선 도시를 선택합니다.
  2. 가장 긴 도시 이름과 그 길이를 구합니다.
    • 마찬가지로, 이름이 같은 경우, 알파벳 순으로 가장 앞선 도시를 선택합니다.
  3. 최종 결과는 두 도시의 이름과 이름의 길이를 포함해야 합니다.

문제 해결 접근 방식

  1. 도시 이름 길이 계산: SQL의 LENGTH(CITY)를 사용하여 도시 이름의 길이를 계산합니다.
  2. 가장 짧은 도시 찾기:
    • 도시 이름 길이를 기준으로 오름차순(ASC) 정렬.
    • 같은 길이를 가진 도시가 여러 개라면 알파벳 순으로 정렬.
    • LIMIT 1을 사용해 가장 짧은 이름을 가진 도시 중 첫 번째 도시를 선택.
  3. 가장 긴 도시 찾기:
    • 도시 이름 길이를 기준으로 내림차순(DESC) 정렬.
    • 같은 길이를 가진 도시가 여러 개라면 알파벳 순으로 정렬.
    • LIMIT 1을 사용해 가장 긴 이름을 가진 도시 중 첫 번째 도시를 선택.
  4. 결과 병합:
    • UNION ALL을 사용해 두 개의 쿼리 결과를 하나로 병합합니다.

SQL 쿼리 코드

(SELECT CITY, LENGTH(CITY) AS NAME_LENGTH
 FROM STATION
 ORDER BY LENGTH(CITY) ASC, CITY ASC
 LIMIT 1)
UNION ALL
(SELECT CITY, LENGTH(CITY) AS NAME_LENGTH
 FROM STATION
 ORDER BY LENGTH(CITY) DESC, CITY ASC
 LIMIT 1);

 

예제 데이터

다음과 같은 STATION 테이블이 있다고 가정합니다:

CITYLENGTH(CITY)

Paris 5
Dubai 5
New York 8
Tokyo 5
Johannesburg 12

실행 결과

위 데이터를 기반으로 쿼리를 실행하면 다음과 같은 결과가 나옵니다:

CITYNAME_LENGTH

Dubai 5
Johannesburg 12
  • 가장 짧은 도시: 이름 길이가 5자인 도시 중 알파벳 순으로 가장 앞선 Dubai.
  • 가장 긴 도시: 이름 길이가 12자인 도시 Johannesburg.

추가 팁

  • LENGTH() 함수는 문자열의 길이를 계산할 때 유용합니다.
  • ORDER BY와 LIMIT은 데이터를 정렬하고 특정 조건에 맞는 결과를 빠르게 찾는 데 효과적입니다.
  • UNION ALL은 두 쿼리 결과를 합쳐주는 역할을 합니다. 중복 제거가 필요하다면 UNION을 사용하면 됩니다.

마무리

이번 문제를 통해 SQL에서 문자열 길이 계산과 정렬, 그리고 조건에 맞는 데이터를 선택하는 방법을 배웠습니다. 실무에서도 데이터의 최대값, 최소값, 특정 조건에 맞는 값을 찾는 데 유용하게 사용할 수 있습니다.

궁금한 점이나 개선할 방법이 있다면 댓글로 남겨주세요! 😊

'SQL' 카테고리의 다른 글

Weather Observation Station 17  (0) 2024.10.31
Weather Observation Station 16  (0) 2024.10.29
Weather Observation Station 15  (0) 2024.10.23
Weather Observation Station 14  (0) 2024.10.22
Weather Observation Station 13  (0) 2024.10.20

조건에 맞는 서경(LONG_W) 값 찾기 SQL 문제 해결하기

오늘은 SQL을 이용해 특정 조건에 맞는 위도와 경도 값을 찾는 문제를 해결하는 방법을 소개하려고 합니다. STATION이라는 테이블이 주어지고, 주어진 조건에 따라 서경(LONG_W) 값을 찾는 문제를 풀어보겠습니다.

 

1. 테이블 설명

STATION 테이블에는 다음과 같은 열이 포함되어 있습니다:

FieldType

ID NUMBER
CITY VARCHAR2(21)
STATE VARCHAR2(2)
LAT_N NUMBER
LONG_W NUMBER

 

 

  • ID : 고유 식별자
  • CITY : 도시 이름
  • STATE : 주(state) 약자
  • LAT_N : 북위 (위도)
  • LONG_W : 서경 (경도)

이 테이블을 이용해 특정 위도에 맞는 경도를 찾아야 합니다.

2. 문제 이해

주어진 문제는 다음과 같은 조건을 포함하고 있습니다.

  • 조건: LAT_N(북위)의 최소값이 38.7780보다 큰 레코드를 찾습니다. 즉, 38.7780보다 큰 값들 중 가장 작은 북위 값에 해당하는 레코드를 찾으라는 뜻입니다.
  • 결과: 찾은 레코드의 LONG_W(서경) 값을 소수점 네 자리까지 반올림하여 출력합니다.

3. 해결 방법

문제를 해결하기 위해 아래 단계대로 접근하겠습니다.

  1. 조건에 맞는 최소 LAT_N 값 찾기
    LAT_N > 38.7780 조건을 만족하는 값 중에서 가장 작은 LAT_N 값을 구합니다.
  2. 찾은 최소 LAT_N 값의 LONG_W 구하기
    조건에 맞는 최소 LAT_N을 가진 레코드에서 LONG_W 값을 구한 뒤, 소수점 네 번째 자리까지 반올림합니다.

4. SQL 쿼리 작성

아래는 문제를 해결하기 위한 SQL 쿼리입니다

SELECT ROUND(LONG_W, 4)
FROM STATION
WHERE LAT_N = (SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780);

 

 

5. 쿼리 설명

  • 조건부 최소값 찾기
    SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780: LAT_N이 38.7780보다 큰 값들 중 가장 작은 값을 찾습니다.
  • 조건에 맞는 LONG_W 선택
    WHERE LAT_N = (SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780): 위에서 구한 최소 LAT_N 값과 일치하는 레코드의 LONG_W 값을 선택합니다.
  • 결과 반올림
    ROUND(LONG_W, 4): 최종 결과값을 소수점 네 자리까지 반올림합니다.

결론

이렇게 하면 조건을 만족하는 최소 북위에 해당하는 서경 값이 네 자리 반올림된 형태로 반환됩니다. 이 쿼리 형식을 익혀두면, 다양한 조건의 데이터에서 특정 값을 쉽게 추출할 수 있어 SQL 문제 풀이에 큰 도움이 될 것입니다!

서브쿼리도 어떻게 써야하는지 다시 한번 해봐야겠다.

'SQL' 카테고리의 다른 글

Weather Observation Station 5  (0) 2024.12.04
Weather Observation Station 16  (0) 2024.10.29
Weather Observation Station 15  (0) 2024.10.23
Weather Observation Station 14  (0) 2024.10.22
Weather Observation Station 13  (0) 2024.10.20

SQL로 특정 값 이상의 최소 북위 찾기

이번 포스팅에서는 데이터셋에서 특정 조건을 만족하는 가장 작은 값을 SQL을 사용해 찾는 방법을 알아보겠습니다. LAT_N(북위) 값 중 주어진 값보다 큰 최소값을 찾아보고, 결과를 소수점 네 자리까지 반올림하는 과정을 다룹니다.

 

문제 설명

STATION이라는 테이블에 북위 값을 나타내는 LAT_N 컬럼이 있다고 가정합니다. 이 컬럼에서 38.7780보다 큰 가장 작은 LAT_N 값을 찾아야 하며, 결과는 소수점 네 자리까지 반올림해야 합니다

 

테이블 구조

ID NUMBER
CITY VARCHAR2(21)
STATE VARCHAR2(2)
LAT_N NUMBER
LONG_W NUMBER
  • ID: 고유 번호 (숫자형)
  • CITY: 도시 이름 (최대 21자 문자열)
  • STATE: 주 코드 (2자 문자열)
  • LAT_N: 북위 값 (숫자형)
  • LONG_W: 서경 값 (숫자형)

이 테이블은 STATION 데이터베이스 테이블로, 각 행은 특정 위치의 정보를 포함하고 있습니다. LAT_N과 LONG_W 필드는 각각 북위와 서경을 나타내며, 이 데이터를 통해 위치 관련 질의를 수행할 수 있습니다.

 

문제 해결 단계

  1. 값 필터링: LAT_N 값 중 38.7780보다 큰 값만 선택합니다.
  2. 최소값 찾기: 선택된 값들 중 가장 작은 값을 찾습니다.
  3. 결과 반올림: 결과값을 소수점 네 자리까지 반올림하여 반환합니다.

SQL 쿼리

SELECT ROUND(MIN(LAT_N), 4)
FROM STATION
WHERE LAT_N > 38.7780;

 

쿼리 설명

  • MIN(LAT_N): 필터링된 결과에서 LAT_N의 최솟값을 구합니다.
  • WHERE LAT_N > 38.7780: LAT_N 값이 38.7780보다 큰 행만 선택합니다.
  • ROUND(..., 4): 최솟값을 소수점 네 자리로 반올림합니다.

예시 결과

예를 들어, 조건을 만족하는 LAT_N 값들이 다음과 같다면:

  • 38.7791
  • 38.8003
  • 38.7856

쿼리는 38.7791을 반환하며, 이는 소수점 네 자리로 반올림된 값입니다.

결론

이번 쿼리에서는 SQL의 필터링, 집계, 반올림 기능을 활용하여 정확한 결과를 도출하는 방법을 알아보았습니다. SQL을 통해 효율적으로 데이터를 분석하고, 의사결정에 도움을 줄 수 있는 인사이트를 빠르게 얻을 수 있습니다.

'SQL' 카테고리의 다른 글

Weather Observation Station 5  (0) 2024.12.04
Weather Observation Station 17  (0) 2024.10.31
Weather Observation Station 15  (0) 2024.10.23
Weather Observation Station 14  (0) 2024.10.22
Weather Observation Station 13  (0) 2024.10.20
 
메모리 업데이트됨

SQL 문제 해결하기: 특정 조건에 맞는 서경 값 찾기

이번 포스팅에서는 SQL을 사용하여 조건에 맞는 데이터를 추출하는 방법을 다룹니다. 주어진 문제는 STATION 테이블에서 북위(LAT_N) 값이 특정 값 이하일 때, 해당하는 서경(LONG_W) 값을 찾는 것입니다. 구체적으로는 북위 값이 137.2345보다 작은 값 중에서 가장 큰 값을 찾고, 그에 대응하는 서경 값을 소수점 4자리까지 반올림하여 반환하는 쿼리를 작성해보겠습니다.

문제 설명

주어진 테이블 구조는 다음과 같습니다:

필드명데이터 타입
ID NUMBER
CITY VARCHAR2(21)
STATE VARCHAR2(2)
LAT_N NUMBER
LONG_W NUMBER

목표는:

  1. 북위(LAT_N) 값이 137.2345보다 작은 값 중에서 가장 큰 값 찾기.
  2. 그 값에 해당하는 서경(LONG_W)을 소수점 4자리까지 반올림하여 반환하기.

SQL 쿼리

SELECT ROUND(LONG_W, 4) 
FROM STATION
WHERE LAT_N = (
    SELECT MAX(LAT_N) 
    FROM STATION 
    WHERE LAT_N < 137.2345
);

 

쿼리 설명

  1. 서브쿼리 (MAX(LAT_N)):
    • STATION 테이블에서 북위(LAT_N) 값이 137.2345보다 작은 값들 중에서 가장 큰 값을 찾습니다.
    • WHERE LAT_N < 137.2345: 이 조건을 만족하는 값들만 검색 대상으로 합니다.
  2. 외부 쿼리 (ROUND(LONG_W, 4)):
    • 서브쿼리에서 찾은 북위 값에 해당하는 서경(LONG_W) 값을 가져옵니다.
    • ROUND(LONG_W, 4): 가져온 서경 값을 소수점 4자리로 반올림하여 출력합니다.

실행 결과

이 쿼리는 STATION 테이블에서 주어진 조건에 맞는 북위 값에 대응하는 서경 값을 정확하게 찾아낼 수 있습니다. 특히, 소수점 4자리까지 반올림한 서경 값을 반환하기 때문에 더욱 정확한 결과를 얻을 수 있습니다.

마무리

SQL 쿼리는 데이터베이스에서 원하는 정보를 효율적으로 추출하는 강력한 도구입니다. 이번 포스팅에서는 서브쿼리와 반올림 기능을 결합하여 조건에 맞는 데이터를 어떻게 추출할 수 있는지 살펴보았습니다. 여러분도 비슷한 문제를 만났을 때, 이 쿼리 구문을 응용해보세요!

'SQL' 카테고리의 다른 글

Weather Observation Station 17  (0) 2024.10.31
Weather Observation Station 16  (0) 2024.10.29
Weather Observation Station 14  (0) 2024.10.22
Weather Observation Station 13  (0) 2024.10.20
Weather Observation Station 2  (1) 2024.10.17

[SQL Query] 북위 값 중 137.2345보다 작은 가장 큰 값 구하기

이번 포스팅에서는 STATION 테이블에서 북위(LAT_N) 값을 기준으로 특정 조건을 만족하는 최대 값을 찾는 SQL 쿼리에 대해 설명하겠습니다. 이 문제는 SQL 학습자가 많이 접하는 실습 문제 중 하나입니다.

문제 설명

우리는 LAT_N 값 중에서 137.2345보다 작은 가장 큰 값을 찾아야 합니다. 또한, 그 값을 소수점 4자리까지 버림(truncate) 처리하여 출력해야 합니다.

 

테이블 구조

FieldType

ID NUMBER
CITY VARCHAR2(21)
STATE VARCHAR2(2)
LAT_N NUMBER
LONG_W NUMBER

위의 테이블에서 LAT_N은 북위(Northern Latitude)를 나타냅니다.

쿼리 분석

  1. WHERE 절: LAT_N 값이 137.2345보다 작은 조건을 설정합니다.
  2. MAX 함수: LAT_N 값 중에서 가장 큰 값을 선택합니다.
  3. ROUND 함수: 결과를 소수점 4자리까지 버림 처리합니다.

SQL 쿼리

SELECT ROUND(MAX(LAT_N), 4) 
FROM STATION 
WHERE LAT_N < 137.2345;

 

  • MAX(LAT_N)은 조건에 맞는 LAT_N 값 중 가장 큰 값을 반환합니다.
  • ROUND (MAX(LAT_N), 4)는 반환된 값을 소수점 4자리까지 버림합니다.
  • WHERE LAT_N < 137.2345는 LAT_N 값이 137.2345보다 작은 조건을 설정합니다.

결과

이 쿼리는 LAT_N 값 중 137.2345보다 작은 가장 큰 값을 소수점 4자리까지 버림하여 반환합니다. 버림은 반올림과 다르게 단순히 소수점 이하의 값을 잘라내는 방식입니다.

결론

이와 같은 문제는 SQL에서 데이터를 필터링하고, 특정 조건에 맞는 최대값을 찾는 방법을 연습할 수 있는 좋은 예시입니다. 특히, 소수점 자리수를 다루는 TRUNC 함수와 MAX 함수의 활용을 익힐 수 있습니다. SQL을 처음 배우는 분들도 쉽게 이해할 수 있도록 간단히 설명하였으니 도움이 되셨길 바랍니다.

'SQL' 카테고리의 다른 글

Weather Observation Station 16  (0) 2024.10.29
Weather Observation Station 15  (0) 2024.10.23
Weather Observation Station 13  (0) 2024.10.20
Weather Observation Station 2  (1) 2024.10.17
Top Earners  (0) 2024.10.15

MySQL에서 특정 범위의 위도 합계를 구하고 소수점 4자리까지 출력하기

이번 포스팅에서는 MySQL을 사용하여 특정 범위의 위도 값을 합산하고, 그 결과를 소수점 4자리까지 출력하는 방법을 다루겠습니다. 우리가 사용할 데이터는 STATION 테이블에 저장된 위치 정보입니다.

 

문제 설명

다음과 같은 구조를 가진 STATION 테이블이 있습니다:

FieldType

ID NUMBER
CITY VARCHAR2(21)
STATE VARCHAR2(2)
LAT_N NUMBER
LONG_W NUMBER

 

  • LAT_N: 위도 값 (Northern Latitude)
  • LONG_W: 경도 값 (Western Longitude)

이번 문제에서는 LAT_N 값이 38.7880보다 크고 137.2345보다 작은 값을 필터링한 후, 그 값들의 합계를 구하여 소수점 4자리까지 반올림한 값을 출력해야 합니다.

SQL 쿼리

MySQL에서 TRUNC() 함수는 지원되지 않으므로, 소수점 자릿수를 조정하려면 ROUND() 함수를 사용해야 합니다. 다음은 쿼리 예시입니다

 

SELECT ROUND(SUM(LAT_N), 4)
FROM STATION
WHERE LAT_N > 38.7880 AND LAT_N < 137.2345;

 

쿼리 설명

  1. SUM(LAT_N): LAT_N 값들의 합계를 계산합니다.
  2. ROUND(SUM(LAT_N), 4): 합계를 소수점 4자리까지 반올림합니다.
  3. WHERE LAT_N > 38.7880 AND LAT_N < 137.2345: LAT_N 값이 38.7880보다 크고, 137.2345보다 작은 행만 필터링합니다.

결과

이 쿼리를 실행하면 주어진 범위에 해당하는 위도 값들의 합계가 소수점 4자리까지 출력됩니다. 이처럼 간단한 SQL 문으로도 원하는 데이터를 쉽게 추출하고, 출력 형식까지 조정할 수 있습니다.

 

마무리

데이터 분석에서 특정 값들의 합계를 구하는 것은 매우 흔한 작업입니다. 특히 소수점 자리수를 조정하는 작업은 정확한 분석 결과를 위해 필수적일 수 있습니다. MySQL에서는 ROUND() 함수를 사용해 이러한 작업을 손쉽게 수행할 수 있습니다. 이번 포스팅을 통해 MySQL에서 값들을 필터링하고 합계를 구한 후, 그 결과를 소수점 자리까지 조정하는 방법을 배우셨기를 바랍니다.

'SQL' 카테고리의 다른 글

Weather Observation Station 15  (0) 2024.10.23
Weather Observation Station 14  (0) 2024.10.22
Weather Observation Station 2  (1) 2024.10.17
Top Earners  (0) 2024.10.15
The Blunder  (7) 2024.10.10

SQL로 위도와 경도의 합 계산하기: 소수점 2자리 반올림 예제

오늘은 STATION 테이블을 활용한 SQL 쿼리 예제를 소개하려고 합니다. 이 예제에서는 북위(LAT_N)와 서경(LONG_W)의 모든 값을 합산하고, 그 값을 소수점 둘째 자리까지 반올림하는 방법을 다룹니다. 이 과정은 특히 데이터 분석이나 지리적 데이터 처리를 할 때 유용하게 사용할 수 있습니다.

 

테이블 구조

STATION 테이블의 구조는 다음과 같습니다:

FieldType

ID NUMBER
CITY VARCHAR2(21)
STATE VARCHAR2(2)
LAT_N NUMBER
LONG_W NUMBER
  • LAT_N: 북위 값 (Latitude North)
  • LONG_W: 서경 값 (Longitude West)

요구 사항

 

  • LAT_N(북위)의 모든 값을 합산한 후 소수점 둘째 자리까지 반올림
  • LONG_W(서경)의 모든 값을 합산한 후 소수점 둘째 자리까지 반올림

SQL 쿼리

SELECT
    ROUND(SUM(LAT_N), 2) AS sum_lat_n,
    ROUND(SUM(LONG_W), 2) AS sum_long_w
FROM
    STATION;

 

 

쿼리 설명

  • SUM(LAT_N): STATION 테이블의 LAT_N 필드의 모든 값을 합산합니다.
  • ROUND(SUM(LAT_N), 2): LAT_N의 합계를 소수점 둘째 자리까지 반올림합니다.
  • SUM(LONG_W): STATION 테이블의 LONG_W 필드의 모든 값을 합산합니다.
  • ROUND(SUM(LONG_W), 2): LONG_W의 합계를 소수점 둘째 자리까지 반올림합니다.

쿼리 결과

이 쿼리를 실행하면 다음과 같이 두 개의 결과 값이 반환됩니다:

  • sum_lat_n: 북위(LAT_N) 값들의 합계 (소수점 2자리까지 반올림)
  • sum_long_w: 서경(LONG_W) 값들의 합계 (소수점 2자리까지 반올림)

결론

위와 같은 SQL 쿼리는 지리적 데이터를 다룰 때 유용하며, 위도와 경도의 값을 소수점 자리수에 맞춰 정밀하게 처리할 수 있습니다. 이를 통해 데이터의 정확도를 높일 수 있으며, 다양한 분야에서 활용할 수 있습니다.

'SQL' 카테고리의 다른 글

Weather Observation Station 14  (0) 2024.10.22
Weather Observation Station 13  (0) 2024.10.20
Top Earners  (0) 2024.10.15
The Blunder  (7) 2024.10.10
Japan Population  (0) 2024.10.07

블로그 포스팅: SQL로 최대 총 수입과 해당 직원 수 구하기

제목: SQL로 최대 총 수입과 해당 직원 수 구하는 방법

소개
이번 포스팅에서는 직원의 월급과 근무 개월 수를 이용해 총 수입을 계산하고, 그 중 최대 총 수입을 가진 직원 수를 구하는 SQL 쿼리를 다룹니다. SQL의 집계 함수와 서브쿼리를 활용하여 이 문제를 어떻게 해결할 수 있는지 알아보겠습니다.

 

문제 설명
직원 테이블에서 각 직원의 월급(salary)과 근무 개월 수(months)를 활용해 총 수입을 계산합니다. 총 수입은 salary * months로 정의됩니다. 이 총 수입 중에서 가장 높은 값인 최대 총 수입을 구하고, 그 최대 총 수입을 가진 직원이 몇 명인지 알아내는 것이 목표입니다.

 

테이블 예시

ColumnType

employee_id Integer
name String
months Integer
salary Integer

 

해결 방안

  1. 먼저 각 직원의 총 수입을 salary * months로 계산합니다.
  2. 그 중에서 최대 총 수입을 구합니다.
  3. 마지막으로, 최대 총 수입을 가진 직원이 몇 명인지 확인합니다.

 

SQL 쿼리

 

SELECT MAX(salary * months) AS max_total_earnings, 
       COUNT(*) AS employee_count
FROM Employee
WHERE salary * months = (
    SELECT MAX(salary * months) 
    FROM Employee
);

 

쿼리 설명

  • MAX(salary * months)를 사용해 각 직원의 총 수입 중 가장 큰 값을 구합니다.
  • 서브쿼리를 이용해 최대 총 수입을 먼저 계산하고, 그 값에 해당하는 직원 수를 COUNT(*)로 셉니다.
  • 이 쿼리의 결과는 최대 총 수입과 그 수입을 가진 직원 수를 공백으로 구분해 출력합니다.

결과 예시
가상의 테이블을 기준으로 쿼리를 실행하면, 최대 총 수입은 69952이고, 그 수입을 가진 직원은 1명일 것입니다.

69952 1

 

마무리
이번 포스팅에서는 SQL 쿼리를 사용해 직원들의 최대 총 수입과 그 수입을 가진 직원 수를 구하는 방법을 살펴보았습니다. SQL의 집계 함수와 서브쿼리를 효과적으로 활용하면 복잡한 문제도 쉽게 해결할 수 있다는 것을 확인할 수 있었습니다. 다음에도 더 흥미로운 SQL 문제와 해결 방법을 공유하겠습니다!

'SQL' 카테고리의 다른 글

Weather Observation Station 13  (0) 2024.10.20
Weather Observation Station 2  (1) 2024.10.17
The Blunder  (7) 2024.10.10
Japan Population  (0) 2024.10.07
Revising Aggregations - Averages  (1) 2024.10.06

블로그 포스팅: SQL 문제 해결 - 평균 월급 계산에서 발생한 오류 잡기

이번 포스팅에서는 재미있는 SQL 문제를 다루어 보겠습니다. 문제는 직원들의 월급을 계산하는 과정에서 발생한 실수를 잡아내고, 이를 SQL 쿼리로 해결하는 방법을 소개합니다.

문제 설명

한 직원, Samantha가 EMPLOYEES 테이블에서 모든 직원들의 평균 월급을 계산하는 작업을 했습니다. 그런데 작업이 끝난 후, Samantha는 그녀의 키보드에서 '0'이 제대로 입력되지 않았다는 것을 깨달았습니다. 즉, '0'이 포함된 월급이 있을 때 이를 무시한 상태로 잘못된 평균 월급을 계산한 것입니다.

목표: 실제 평균 월급과 잘못된 평균 월급 간의 차이를 구하고, 그 차이를 올림하여 정수로 반환하는 SQL 쿼리를 작성해야 합니다.

테이블 구조

다음은 EMPLOYEES 테이블의 구조입니다:

ColumnType

ID Integer
Name String
Salary Integer

문제 해결 방법

문제를 해결하기 위해 다음 단계를 거칩니다:

  1. 실제 평균 월급을 구합니다.
  2. 잘못된 평균 월급은 '0'이 제거된 상태에서 월급을 계산한 값입니다.
  3. 실제 평균과 잘못된 평균의 차이를 계산하고, 그 차이를 올림 처리하여 정수로 반환합니다.

SQL 쿼리 작성

WITH Actual_Salary AS (
    SELECT AVG(Salary) AS avg_actual_salary
    FROM EMPLOYEES
),
Miscalculated_Salary AS (
    SELECT AVG(CAST(REPLACE(Salary, '0', '') AS UNSIGNED)) AS avg_miscalculated_salary
    FROM EMPLOYEES
)
SELECT CEIL(Actual_Salary.avg_actual_salary - Miscalculated_Salary.avg_miscalculated_salary) AS error_amount
FROM Actual_Salary, Miscalculated_Salary;

 

쿼리 설명

  1. Actual_Salary: 이 부분에서는 직원들의 실제 평균 월급을 계산합니다.
SELECT AVG(Salary) AS avg_actual_salary
FROM EMPLOYEES

 

2. Miscalculated_Salary: 여기에서는 월급에서 '0'을 제거한 후, 그 값을 숫자로 변환하여 잘못된 평균 월급을 계산합니다.

SELECT AVG(CAST(REPLACE(Salary, '0', '') AS UNSIGNED)) AS avg_miscalculated_salary
FROM EMPLOYEES

 

3. 마지막으로 두 평균의 차이를 계산한 후, CEIL 함수를 사용하여 올림 처리된 값을 반환합니다.

결과

이 쿼리는 실제 평균과 잘못된 평균의 차이를 정수로 반환하게 되며, 이 값을 통해 Samantha가 범한 오류의 크기를 정확히 알 수 있습니다.

'SQL' 카테고리의 다른 글

Weather Observation Station 2  (1) 2024.10.17
Top Earners  (0) 2024.10.15
Japan Population  (0) 2024.10.07
Revising Aggregations - Averages  (1) 2024.10.06
The PADS  (1) 2024.10.06

블로그 포스팅: SQL 쿼리로 일본 도시들의 인구 합계 구하기

SQL은 데이터베이스에서 데이터를 효율적으로 조회하고 조작할 수 있는 강력한 도구입니다. 이번 포스팅에서는 CITY 테이블에서 일본에 속한 도시들의 인구 합계를 구하는 SQL 쿼리를 살펴보겠습니다.

문제 설명

CITY 테이블에는 도시의 ID, 이름, 국가 코드, 구역, 인구 등의 정보가 담겨 있습니다. 이 테이블에서 **국가 코드가 'JPN'**인 도시들의 인구 합계를 구하는 것이 목표입니다.

CITY 테이블 구조는 다음과 같습니다:

FieldType

ID NUMBER
NAME VARCHAR2(17)
COUNTRYCODE VARCHAR2(3)
DISTRICT VARCHAR2(20)
POPULATION NUMBER

여기서, COUNTRYCODE가 'JPN'인 도시들은 일본에 속한 도시들입니다. 이 도시들의 인구 합계를 SQL을 사용해 구해보겠습니다.

 

SQL 쿼리

SELECT SUM(POPULATION) 
FROM CITY
WHERE COUNTRYCODE = 'JPN';

 

쿼리 설명

  1. SELECT SUM(POPULATION): POPULATION 필드의 합계를 계산하는 구문입니다. 즉, 이 쿼리는 일본에 속한 도시들의 인구 수를 모두 더합니다.
  2. FROM CITY: CITY 테이블에서 데이터를 선택합니다.
  3. WHERE COUNTRYCODE = 'JPN': 조건절로, 국가 코드가 'JPN'인 데이터만 필터링합니다. 이를 통해 일본에 속한 도시들만 선택하게 됩니다.

결과

이 쿼리를 실행하면 일본 도시들의 총 인구를 반환하게 됩니다. 예를 들어, 도시 A의 인구가 500,000명이고, 도시 B의 인구가 300,000명이라면, 결과는 800,000이 될 것입니다.

결론

이 간단한 SQL 쿼리를 통해 데이터베이스에서 특정 국가에 속한 도시들의 인구 합계를 쉽게 구할 수 있습니다. SQL의 기본적인 집계 함수와 조건절을 활용하여 다양한 분석을 할 수 있으니, 다른 문제에도 응용해 보세요!

'SQL' 카테고리의 다른 글

Top Earners  (0) 2024.10.15
The Blunder  (7) 2024.10.10
Revising Aggregations - Averages  (1) 2024.10.06
The PADS  (1) 2024.10.06
Revising Aggregations - The Sum Function  (0) 2024.10.03

+ Recent posts