-
코드카타 / 통계[스파르타코딩클럽]데이터분석 과정/TIL,WIL 2024. 3. 15. 20:28
SQL 코드카타
식품분류별 가장 비싼 식품의 정보 조회하기
식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요.
이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬- 가격이 제일 비싼 : max
- 식품분류별 : group by
- 식품분류가 과자, 국, 김치, 식용유인 경우 : having
- 식품분류가 과자, 국, 김치, 식용유인 경우 : in ('국','김치','과자','식용유')
SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAME FROM FOOD_PRODUCT WHERE (CATEGORY, PRICE) IN ( SELECT CATEGORY, MAX(PRICE) FROM FOOD_PRODUCT GROUP BY CATEGORY HAVING CATEGORY IN ('국','김치','식용유','과자') ) ORDER BY MAX_PRICE DESC;
List the Products ordered in a period
2020년 2월에 100개 이상 주문한 제품의 이름과 수량을 가져오는 솔루션을 작성하세요.- 2020년 : year
- 2월 : month
- 제품의 ~ : group by
- 100개 이상 : sum() >= 100
- 테이블 2개 조인 : join on / using
--- on 사용 SELECT p.product_name as product_name, sum(o.unit) as unit FROM Products p LEFT JOIN Orders o on p.product_id = o.product_id WHERE YEAR(o.order_date) = '2020' and MONTH(o.order_date) = '02' GROUP BY p.product_id HAVING SUM(o.unit) >= 100; --- using 사용 SELECT p.product_name as product_name, sum(o.unit) as unit FROM Products p LEFT JOIN Orders o Using (product_id) WHERE YEAR(o.order_date) = '2020' and MONTH(o.order_date) = '02' GROUP BY p.product_id HAVING SUM(o.unit) >= 100;
On 조건절
- 컬럼명이 다르더라도 Join 조건 사용 가능
- Where절과 혼용 사용 가능
- 검색 조건을 사용 가능
Using
- From절의 Using 조건절을 이용하면 같은 이름을 가진 컬럼 중 원하는 컬럼에 대해서만 EQUI JOINChallenges
각 학생이 생성한 hacker_id, 이름 및 총 챌린지 수를 인쇄하는 쿼리를 작성
총 챌린지 수를 기준으로 결과를 내림차순으로 정렬
두 명 이상의 학생이 동일한 수의 챌린지를 생성한 경우 결과를 hacker_id를 기준으로 정렬
두 명 이상의 학생이 동일한 수의 챌린지를 생성했고 개수가 생성된 최대 챌린지 수보다 적은 경우 결과에서 해당 학생을 제외- 고유한 점수
SELECT aux_table.counter FROM( SELECT hacker_id, COUNT(challenge_id) AS counter FROM challenges GROUP BY hacker_id ORDER BY counter DESC ) AS aux_table GROUP BY aux_table.counter /*Grouping by counter scores*/ HAVING COUNT(aux_table.counter) = 1;
- 최대 챌린지
SELECT MAX(aux_table.counter) FROM( SELECT hacker_id, COUNT(challenge_id) AS counter FROM challenges GROUP BY hacker_id ORDER BY counter DESC ) AS aux_table;
- 최종
SELECT h.hacker_id, h.name, COUNT(c.challenge_id) AS challenge_counter FROM hackers h JOIN challenges c ON h.hacker_id = c.hacker_id GROUP BY h.hacker_id, h.name HAVING challenge_counter IN ( SELECT aux_table.counter FROM( SELECT hacker_id, COUNT(challenge_id) AS counter FROM challenges GROUP BY hacker_id ORDER BY counter DESC ) AS aux_table GROUP BY aux_table.counter HAVING COUNT(aux_table.counter) = 1 ) OR challenge_counter =( SELECT MAX(aux_table.counter) FROM( SELECT hacker_id, COUNT(challenge_id) AS counter FROM challenges GROUP BY hacker_id ORDER BY counter DESC ) AS aux_table) ORDER BY challenge_counter DESC, h.hacker_id ASC;
통계
- 데이터 분석의 목적
- 데이터를 요약
- 대상을 설명 : 대상이 가진 성질과 관계성을 명확히 밝히고 이를 이해한다.
통계학에 의거한 데이터 분석은 데이터를 정량적이고 객관적으로 평가하여 대상이 가진 성질과 관계성을 올바르게 찾고자 하는 시도- 새로 얻을 데이터를 예측 : 이미 얻은 데이터를 기반으로 이후 새롭게 얻을 데이터를 예측하는 것
- 통계
기술통계 : 수집한 데이터를 정리하고 요약하는 방법
추론통계 : 수집한 데이터로부터 데이터의 발생원을 추정하는 방법통계적 추론 : 데이터에서 가정한 확률 모형의 성질을 추정하는 방법
가설검정 : 세운 가설과 얻은 데이터가 얼마나 들어맞는지를 평가하여, 가설을 채택할 것인가를 판단하는 방법- 모집단
모집단 : 알고자 하는 대상 전체
- 유한 모집단 : 모집단 중 한정된 요소만 포함한 것
- 무한 모집단 : 모집단 중 포함된 요소의 개수가 무한한 것모집단의 성질
- 전수조사 : 모집단에 포함된 모든 요소를 조사
분석할 데이터 = 모집단 : 데이터 그 자체의 특징을 기술하고 요약하는 것을 기술통계
비용이나 시간 면에서 부담이 막대하여 실현 불가능할 때가 대부분
- 표본조사 : 모집단의 일부를 분석하여 모집단 전체의 성질을 추정
모집단의 일부 = 표본- 변수
공통의 측정 방법으로 얻은 같은 성질의 값
- 양적 변수 (수치형 변수) : 숫자로 나타낼 수 있는 변수
- 이산형 : 얻을 수 있는 값이 점점이 있는 변수
- 연속형 : 간격 없이 이어지는 값으로 나타낼 수 있는 변수
- 질적 변수 (범주형 변수) : 범주로 변수를 나타낼 수 있는 변수- 기술통계량
- 대푯값 : 대략적인 분포 위치, 즉 대표적인 값을 정량화하기 위해 사용하는 통계량
- 평균값 : 표본의 평균값
- 중앙값 : 크기 순으로 값을 정렬했을 때 한가운데 위치한 값
- 최빈값 : 데이터 중 가장 자주 나타나는 값
이상값 : 드물게 극단적으로 큰 값이나 작은 값 -> 평균값에 영향을 줌
: 평균값에서 표준편차의 2배 또는 3배 이상 벗어난 숫자
- 데이터 퍼짐 정도를 나타내는 값 - 성질 : 표본분산 >= 0 , 모든 값이 같다면 0, 데이터 퍼짐 정도가 크면 표본분산이 커짐
- 박스플랏 : 분산 확인 (중앙값, 사분위수, 최댓값, 최솟값) -> 바이올린 플롯, 스웜 플롯
- 분산 : 확률분포가 기댓값 주변에 어느정도 퍼졌는지를 나타내는 값
- 표준편차 : 분산의 제곱근을 취한 값- 확률
확률 : 불확실한 사건의 발생 가능성을 숫자로 표현
확률변수 : 확률이 달라지는 변수
실현값 : 확률변수가 실제로 취하는 값
확률분포 : 가로축에 확륣변수를, 세로축에 그 확률변수의 발생 가능성을 표시한 분포
-> 모집단과 표본 데이터처럼 다루기 어려운 대상이 확률분포와 그 실현값처럼 다룰 수 있는 대상으로 치환--통계 101
'[스파르타코딩클럽]데이터분석 과정 > TIL,WIL' 카테고리의 다른 글
코드카타 / 스파크 (0) 2024.03.19 코드카타 / 스파크 (0) 2024.03.18 코드카타 (2) 2024.03.14 팀 회고 (0) 2024.03.13 코드카타 (0) 2024.02.29