SQL 학습과제 - 3

호진·2024년 1월 27일
0

AI_스쿨

목록 보기
48/51
post-thumbnail

문제 1 🔥🔥🔥

데이터베이스에 table을 생성하고 181691개의 데이터를 넣는 문제이다.

유의사항 속지말자.... 🤬🤬
1번 문제는 정답코드를 공개한다는 말을 듣고 코드를 수정하지 않고 진행하였는데... 유의사항의 코드가 이제는 지원하지 않는 코드라 오류가 발생하였는데 데이터가 많아 오류 확인을 하는데도 10~5분정도 걸려 단순한 문제인데도 3시간 넘게 걸린거 같다...

문제 2

만들고 origin_terror_data 에서 데이터를 새로 만든 Region과 Country에 넣기

문제 3


만들고 origin_terror_data 에서 데이터를 새로 만든 AttackType, TargetType, WeaponType에 넣기

문제 4 🔥🔥🔥🔥🔥

만들고 문제1, 2, 3번에서 데이터를 새로 만든 TerrorData에 넣기...

2, 3번과 같은 방법으로 처리할 수 있으면 정말 좋겠지만 아래와 같은 조건을 충족시켜야 하는 문제이다

  • 앞서 생성한 Region, Country, AttackType, TargetType, WeaponType 데이터와의 관계에 주의하세요.
  • Count 값을 가지는 칼럼의 값이 null 인 경우, 0으로 예외처리 해주세요.
  • 위도 경도 데이터 중 범위를 넘어서는 데이터가 존재합니다. 이 경우, null 값으로 예외처리 해주세요. (위도 경도 범위 : 구글링해보세요.)
  • terror_date 칼럼의 경우, origin_terror_data 의 연, 월, 일 정보를 조합하여 date type 으로 정의해주세요. (Format : ‘YYYY-mm-dd’)
  • origin_terror_data 의 월, 일 정보중 값이 0 인 경우 date type 으로 변환되지 않습니다. 이 경우, 1 로 예외처리 해주세요.
  • 데이터 입력까지 완료한 이후, origin_terror_data 테이블을 삭제하고 확인하세요.

gpt 선생님과 함께라면 그렇게 어려운 문제는 아니지만 이 문제또한 18만개의 데이터를 다루는 문제다 보니 한번 오류를 확인하는데 10분 정도의 텀이 생겨 진행에 어려움이 많이 생겼다. 또 지금까지는 select x from y -> python -> insert 라는 방법으로 진행했었는데 여기서는 insert into table selcet 문을 사용하여 파이썬을 거치지 않고 한번에 처리하여 진행하였다.

문제 5

TerrorData 의 전체 기간에서 테러의 숫자를 연도별로 집계하여 연도별 테러 발생 건수를 조회하세요.

SELECT YEAR(terror_date) AS terror_year, COUNT(*) AS record_count FROM TerrorData GROUP BY terror_year ORDER BY terror_year;

문제 6

TerrorData 에서 테러가 가장 많이 일어난 순서로 국가를 정렬하여 상위 10위 국가를 조회하세요.

SELECT Region.region_name, COUNT(*) AS record_count FROM\
        TerrorData JOIN Region ON TerrorData.region_code = Region.region_code GROUP BY TerrorData.region_code,\
        Region.region_name ORDER BY record_count DESC limit 10;

문제 7

TerrorData 에서 테러가 가장 많이 일어난 상위 10위 국가에 대해 국가별로 사망자수와 부상자수, 사상자수(사망자수 + 부상자수)를 조회

SELECT Country.country_name, COUNT(*) AS record_count FROM\
        TerrorData JOIN Country ON TerrorData.country_code = Country.country_code GROUP BY TerrorData.country_code,\
        Country.country_name ORDER BY record_count DESC limit 10;

문제 8

지역별 테러 공격 형태에 따른 사망자수, 부상자수, 사상자수를 조회

SELECT Region.region_name AS region, AttackType.attacktype_desc AS attack_desc, SUM(TerrorData.kill_count) AS total_kills, \
    SUM(TerrorData.wound_count) AS total_wounds, SUM(TerrorData.kill_count + TerrorData.wound_count) AS total_casualties\
    FROM TerrorData JOIN Region ON TerrorData.region_code = Region.region_code JOIN AttackType ON TerrorData.attacktype_code = AttackType.attacktype_code\
    GROUP BY Region.region_name, AttackType.attacktype_desc;

전체코드

전체코드

profile
중요한 건 꺽였는데도 그냥 하는 마음

0개의 댓글