데이터베이스에 table을 생성하고 181691개의 데이터를 넣는 문제이다.
유의사항 속지말자.... 🤬🤬
1번 문제는 정답코드를 공개한다는 말을 듣고 코드를 수정하지 않고 진행하였는데... 유의사항의 코드가 이제는 지원하지 않는 코드라 오류가 발생하였는데 데이터가 많아 오류 확인을 하는데도 10~5분정도 걸려 단순한 문제인데도 3시간 넘게 걸린거 같다...
만들고 origin_terror_data 에서 데이터를 새로 만든 Region과 Country에 넣기
만들고 origin_terror_data 에서 데이터를 새로 만든 AttackType, TargetType, WeaponType에 넣기
만들고 문제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 문을 사용하여 파이썬을 거치지 않고 한번에 처리하여 진행하였다.
TerrorData 의 전체 기간에서 테러의 숫자를 연도별로 집계하여 연도별 테러 발생 건수를 조회하세요.
SELECT YEAR(terror_date) AS terror_year, COUNT(*) AS record_count FROM TerrorData GROUP BY terror_year ORDER BY terror_year;
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;
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;
지역별 테러 공격 형태에 따른 사망자수, 부상자수, 사상자수를 조회
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;