프로그래밍 38

[PySpark] 백분위수(percentile), 사분위수(quantile)

약 1억 5천만건 데이터에서 특정한 값 기준으로 상위 n개의 데이터를 뽑아내는데 orderBy 후 limit(n)을 이용해 추출했다. 근데 너무 오래걸리더라... 값을 기준으로 정렬하는 연산방식이 spark에서 비효율적이라고 어디서 본거 같은데... 그래서 분위수 값을 구해 cut-off 방식으로 데이터를 추출했는데 시간이 더 적게 걸리더라. 우선, 예시를 들기 위해 다음과 같이 PySpark 세팅과 데이터 프레임을 구성했다. 그리고 visit(string 형식)의 값에 대해 분위수 값을 구하려고 한다. from pyspark.sql import SparkSession spark = SparkSession.builder.master("local[1]").appName("regexp_replace").ge..

[PySpark] regexp_replace 함수

PySpark 데이터 프레임에 있는 string value들을 다른값으로 바꾸거나 처리하는데 SQL string functions인 regexp_replace(), translate() 및 overlay()등을 사용할 수 있다. 그 중에서 PySpark SQL 함수인 regexp_replace() 사용하면 string column을 another string/substring column으로 생성할 수 있다. 예시를 보여주기 위해 우선, 데이터 프레임을 생성한다. 각각 고유식별 번호, 성별 + 지역, 출생일 이다. from pyspark.sql import SparkSession spark = SparkSession.builder.master("local[1]").appName("regexp_replac..

[프로그래머스] SQL 고득점 Kit - String, Date

프로그래머스에 있는 SQL 고득점 Kit MySql 문제풀이 입니다. 코딩 테스트 연습겸 풀고있는 문제 풀이 공유합니다. 혹시 더 좋은 풀이 있으신 분은 공유해주시면 감사하겠습니다~~ https://programmers.co.kr/ 이름에 el이 들어가는 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE ANIMAL_TYPE = "Dog" and NAME like '%el%' ORDER BY NAME; 중성화 여부 파악하기 SELECT ANIMAL_ID, NAME, IF(SEX_UPON_INTAKE LIKE '%NE%' OR SEX_UPON_INTAKE LIKE '%SPA%', 'O', 'X') AS '중성화' FROM ANIMAL_INS; DATETIME에서 D..

프로그래밍/SQL 2022.11.27

[프로그래머스] SQL 고득점 Kit - JOIN

프로그래머스에 있는 SQL 고득점 Kit MySql 문제풀이 입니다. 코딩 테스트 연습겸 풀고있는 문제 풀이 공유합니다. 혹시 더 좋은 풀이 있으신 분은 공유해주시면 감사하겠습니다~~ https://programmers.co.kr/ 보호소에서 중성화한 동물 SELECT a.ANIMAL_ID, a.ANIMAL_TYPE, a.NAME FROM ANIMAL_INS a LEFT JOIN ANIMAL_OUTS b ON a.ANIMAL_ID = b.ANIMAL_ID WHERE a.SEX_UPON_INTAKE != b.SEX_UPON_OUTCOME;

프로그래밍/SQL 2022.11.27

[프로그래머스] SQL 고득점 Kit - IS NULL

프로그래머스에 있는 SQL 고득점 Kit MySql 문제풀이 입니다. 코딩 테스트 연습겸 풀고있는 문제 풀이 공유합니다. 혹시 더 좋은 풀이 있으신 분은 공유해주시면 감사하겠습니다~~ https://programmers.co.kr/ 이름이 없는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL; 이름이 있는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL; NULL 처리하기 SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS;

프로그래밍/SQL 2022.11.27

[프로그래머스] SQL 고득점 Kit - GROUP BY

프로그래머스에 있는 SQL 고득점 Kit MySql 문제풀이 입니다. 코딩 테스트 연습겸 풀고있는 문제 풀이 공유합니다. 혹시 더 좋은 풀이 있으신 분은 공유해주시면 감사하겠습니다~~ https://programmers.co.kr/ 고양이와 개는 몇 마리 있을까 SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS 'count' FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE; 동명 동물 수 찾기 SELECT NAME, COUNT(NAME) AS 'count' FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME HAVING COUNT(NAME) > 1 ORDER BY NAME; 입양 시..

프로그래밍/SQL 2022.11.27

[프로그래머스] SQL 고득점 Kit - SUM, MAX, MIN

프로그래머스에 있는 SQL 고득점 Kit MySql 문제풀이 입니다. 코딩 테스트 연습겸 풀고있는 문제 풀이 공유합니다. 혹시 더 좋은 풀이 있으신 분은 공유해주시면 감사하겠습니다~~ https://programmers.co.kr/ 가장 비싼 상품 구하기 SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT; 가격이 제일 비싼 식품의 정보 출력하기 SELECT * FROM FOOD_PRODUCT ORDER BY PRICE DESC LIMIT 1; 최대값 구하기 SELECT MAX(DATETIME) AS '시간' FROM ANIMAL_INS 최소값 구하기 SELECT MIN(DATETIME) AS '시간' FROM ANIMAL_INS 동물수 구하기 SELECT COUNT(ANIMA..

프로그래밍/SQL 2022.11.27

[프로그래머스] SQL 고득점 Kit - SELECT

프로그래머스에 있는 SQL 고득점 Kit MySql 문제풀이 입니다. 코딩 테스트 연습겸 풀고있는 문제 풀이 공유합니다. 혹시 더 좋은 풀이 있으신 분은 공유해주시면 감사하겠습니다~~ https://programmers.co.kr/ 과일로 만든 아이스크림 고르기 SELECT a.FLAVOR FROM FIRST_HALF a LEFT JOIN ICECREAM_INFO b ON a.FLAVOR = b.FLAVOR WHERE a.TOTAL_ORDER > 3000 and b.INGREDIENT_TYPE LIKE '%fr%' ORDER BY TOTAL_ORDER DESC; 12세 이하인 여자 환자 목록 출력하기 SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') ..

프로그래밍/SQL 2022.11.27