TIL 66

프로그래머스| 푸드파이트 대회(Python3)

문제설명수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다. 이번 대회를 위해 수웅이는 음식을 주문했는데, 대회의 조건을 ..

TIL/Python 2024.08.01

프로그래머스| 저자별 카테고리별 매출액 집계하기(My SQL)

문제 설명다음은 어느 한 서점에서 판매중인 도서정보(BOOK), 저자정보(AUTHOR), 도서판매정보(BOOK_SALES) 테이블입니다. 문제2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요. 나의 풀이)select a.author_id, a.author_name, b.category, sum(b.price*s.sales) as total_sales from book b join bo..

TIL/SQL 2024.08.01

프로그래머스| 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기(My SQL)

문제 설명다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS은 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다. 문제 USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /..

TIL/SQL 2024.08.01

TIL (7/31) <날짜 자료형 총 정리(My SQL)>

1. 날짜형 자료 기본My SQL 자료형한국은 UTC보다 9시간 빠르다. 방법1)#세션에서 시간대를 변경 SET time_zone = 'Asia/Seoul'; SELECT CURDATE(), CURRENT_TIME(), NOW(); 방법2) 글로벌 시간대를 변경한다. (ROOT 권한 필요)SET GLOBAL time_zone = 'Asia/Seoul'; SELECT CURDATE(), CURRENT_TIME(), NOW(); 방법3) 시간대를 변환하여 조회CONVERT_TZ(NOW(), FROMTZ, TO_TZ)SELECT CONVERT_TZ(NOW(), '+00:00', '+09:00') AS current_seoul_time; DATETIME vs TIMESTMAP 2. 날짜 변환 & 가공 함수YEA..

TIL/SQL 2024.07.31

프로그래머스| 우유와 요거트가 담긴 장바구니(My SQL)

조건 두개를 동시에 만족해야 하기에 self join을 활용하여 문제를 해결하였다. 나의 풀이)select a.cart_idfrom cart_products a join (select cart_id, namefrom cart_products) b on a.cart_id = b.cart_id where a.name = "Milk" and b.name = "Yogurt" group by cart_idorder by cart_id하나의 쿼리에선 name이 Milk인, 하나의 쿼리에선 Yogurt인 cart_id에 대해 교집합을 구하였다.^ㅁ^

TIL/SQL 2024.07.31

프로그래머스| 헤비 유저가 소유한 장소(My SQL)

처음 작성한 코드select id, name, host_id from (select *from placesgroup by host_id having count(*) >= 2) as a order by id 오류 발생 이유는 group by host_id로 인해 having절을 만족하는 host_id에 대한 행 총 두개만 출력이 된다.원하는 쿼리는 조건을 만족하는 host_id가 가진 모든 공간 정보가 나와야 하기에 where절에 서브쿼리를 사용해야 한다. 나의 풀이)select id, name, host_id from places where host_id in (select host_id from places group by host_id having count(*) >= 2) order by idwhe..

TIL/SQL 2024.07.31

전처리 <그룹 내 데이터 최빈값으로 대체하기>

결측치를 채우는 전처리는 해보았는데, null값이 없는 컬럼의 이상치를 그룹 내 최빈값으로 대체하는 과정은 처음이었다.많이 쓸 것 같아서 기억하려고 가져왔다.df['연간 소득'] = df['연간 소득'].str.replace('_', '') df['연간 소득'] = df['연간 소득'].astype(float) df['연간 소득'] = df['연간 소득'].astype(int) [연간 소득] 컬럼이 object형이고, '_'가 들어가 있는 이상값이 있어서 언더바를 삭제한 후, int형으로 변환해주었다. from scipy.stats import mode df['최빈값'] = df.groupby('고객번호')['연간 소득'].transform(lambda x: mode(x)[0])최빈값을 구하는 함수인 m..

데이터 전처리 <IQR 이상치 제거>

프로젝트 진행 중 [마감 지연 건수] 컬럼 전처리 과정df['마감 지연 건수'].describe()min 값이 -3으로 건수가 음수인 건 말이 안됨. > 이상치라고 판단은행에 대한 도메인 지식이 부족하므로 다른 행들을 본 결과 음수로 잘못 입력됐다고 판단.def remove_minus(series):     if series         return (-series)     else: return (series) df['마감 지연 건수'] = df['마감 지연 건수'].apply(remove_minus)min 값이 0으로 바뀐 것을 확인 할 수 있다. 마감 지연 건수가 4399로 이상치라고 판단하였다.IQR을 통해 이상치 값을 제거하기로 하였다.q1=df['마감 지연 건수'].quantile(0.25)..

SQL <자료형, 외부에서 데이터 불러오기>

1. 정수형 자료형SIGNED(기본)과 UNSIGNED 옵션을 가질 수 있음.전자는 양수/음수를 후자는 양수를 저장함.또한 정수형 자료형은 Auto_increment 제약조건을 이용하여 ID를 생성하는데 유용 2. 실수형 자료형이진법으로 데이터를 저장하는 컴퓨터 특성상 소수점의 정확한 저장이 어렵다.이를 부동소수점이라함. 저장이 효율적이지만 어느정도 정확도를 제한하겠다 --> 부동소수점저장이 비효율적이지만 정확도를 추구하겠다 -->고정소수점위부터 float, double, decimal 자료형 3. 문자 자료형정규표현식 - 문자열에서 특정 패턴을 찾기 위한 강력한 도구 - 자연어 처리를 할 수 있는 제일 간단한 도구 - REGEXP_LIKE() : 주어진 문자열이 정규표현식과 일치하는지 여부를 반환 - ..

TIL/SQL 2024.07.23

SQL<DDL, DML, 확장자>

1. 테이블 생성하기(DDL)CREATE TABLE {테이블명} ({컬럼1} {자료형} PRIMARY KEY      #일반적으로PK가 첫 번째옴 {컬럼2} {자료형} {제약조건}       #서로 관계를 가지고 있는 RDB 특성상 제약조건이 필요할때가 있음 );CREATE TABLE에서는 컬럼별로 제약조건을 설정할 수 있음.제약 조건이란 ?- 데이터의 무결성을 보장하는데 도움이 되는 시스템 ex) JOBS 테이블 생성하기CREATE TABLE jobs (    job_id VARCHAR(10) PRIMARY KEY,    job_title VARCHAR(100),    min_salary INT,    max_salary INT); 2. 데이터 조작하기(DML) 1) 데이터 삽입하기#기본 구성INSER..

TIL/SQL 2024.07.23