전체 글

Garbage in, garbage out
알고리즘

[SQL]프로그래머스 Lv.4 주문량이 많은 아이스크림들 조회하기

✅ 코드 WITH T AS ( SELECT * FROM FIRST_HALF UNION ALL SELECT * FROM JULY ) SELECT FLAVOR FROM T GROUP BY FLAVOR ORDER BY SUM(TOTAL_ORDER) DESC LIMIT 3 FIRST_HALF와 JULY 테이블의 컬럼 형식이 동일해서 UNION ALL을 사용했습니다.

알고리즘

[SQL]프로그래머스 Lv.4 우유와 요거트가 담긴 장바구니

✅ 코드 SELECT CART_ID FROM CART_PRODUCTS WHERE NAME IN ('Milk', 'Yogurt') GROUP BY CART_ID HAVING COUNT(DISTINCT NAME) = 2 ORDER BY CART_ID GROUP BY와 HAVING문을 사용한 풀이입니다. 핵심은 HAVING문에서 DISTINCT 키워드를 사용했다는 점입니다. 🔎 참고 WITH MILK_YOGURT_CARTS AS ( SELECT CART_ID , CASE WHEN SUM(IF(NAME IN ('Milk', 'Yogurt'), 1, 0)) = 2 THEN 'O' ELSE 'X' END AS TARGET FROM CART_PRODUCTS GROUP BY CART_ID ) SELECT CART_ID..

알고리즘

[SQL]프로그래머스 Lv.4 5월 식품들의 총매출 조회하기

✅ 코드 SELECT P.PRODUCT_ID AS PRODUCT_ID , P.PRODUCT_NAME AS PRODUCT_NAME , SUM(P.PRICE * O.AMOUNT) AS SALES FROM FOOD_PRODUCT AS P INNER JOIN FOOD_ORDER AS O ON P.PRODUCT_ID = O.PRODUCT_ID WHERE O.PRODUCE_DATE BETWEEN '2022-05-01 00:00:00' AND '2022-05-31 23:59:59' GROUP BY PRODUCT_ID ORDER BY SALES DESC , PRODUCT_ID INNER JOIN → 5월 생산 식품목록 필터링(WHERE) → GROUP BY 순으로 풀이가 가능합니다.

데이터분석

서비스 리텐션에 대해서

데이터리안 블로그의 리텐션 관련 여러 아티클을 읽고 결론을 내릴 수 있었습니다. 핵심은 '우리 서비스가 제공하는 본질적인 가치'라는 점입니다. 서비스의 핵심 가치에 대해 깊게 고민하고 이를 고객들에게 100% 전달할 수 있다면 리텐션 지표는 좋을 수 밖에 없습니다. 기간별 활성 유저 수를 늘려야한다는 얄팍한 술수(?)를 떠올리기 이전에, 우선적으로 "고객들에게 어떤 가치를 제공할 수 있을까?"에 대해 지속적으로 고민해야겠습니다. 보다 더 본질적인 고민이 선행한다면.. 스마일 리텐션 차트를 받아볼 수 있지 않을까요? 🤓🚀

알고리즘

[SQL]해커랭크 Binary Tree Nodes

LEFT JOIN과 서브쿼리를 사용한 2가지 풀이가 가능합니다. 서브쿼리를 사용한 코드부터 살펴보겠습니다. SELECT N , CASE WHEN P IS NULL THEN 'Root' WHEN N NOT IN (SELECT DISTINCT P FROM BST WHERE P IS NOT NULL) THEN 'Leaf' ELSE 'Inner' END AS node_type FROM BST ORDER BY N; 4번째 줄의 WHERE문을 입력하지 않으면 원하는 대로 코드가 출력되지 않습니다. 이 부분을 이해하느라 상당히 많은 시간이 소요됐는데 원인은 컬럼 P에 있는 NULL 때문입니다. NULL 값을 다룰 때는 항상 주의해야 할 것 같습니다. IS NOT NULL 조건이 없으면 Leaf 노드여야 할 노드들이..

데이터분석

데이터리안 SQL 입문반 수업을 마치며

결론은 대만족이다. SQL을 혼자 공부해 본 경험이 있든 없든 간에 SQL 실력을 탄탄하게 다질 수 있는 과정이라는 것을 확실히 느꼈다. 개인적으로 캠프 수강 전에 SQL을 조금 공부한 상태였다. 하지만 중간중간 지식의 공백을 느꼈고, 머리 속에 SQL 지식들이 사방팔방 흩어져 있어서 찝찝함을 지울 수 없었다. 입문반을 완강한 현재, 그 찝찝함을 말끔하게 지워버렸다. 다음 3가지가 특히 마음에 들었다. 첫째, 자체 SQL 문제풀이 플랫폼. solvesql에는 양질의 문제들이 있다. 공부한 내용과 관련이 있는 연습문제를 바로바로 풀어볼 수 있다는 사실이 너무 만족스러웠다. (개인적으로는 프로그래머스 SQL 문제들보다 퀄리티가 좋다는 느낌을 받았다!) 'solvesql 플레이그라운드'도 기억에 남는다. 여..

태블로

태블로 Fixed LOD

온전한 하루를 Fixed LOD 개념을 이해하는 데 썼습니다.. 언제 어떻게 써야 하는지 감이 안와서 블로그, 유튜브 영상을 뒤져가며 최대한 이해하려고 노력한 결과.. 드디어 감을 잡았습니다!! 🎉 핵심은 화면에 있는 차원과는 독립적으로, 다시 말해서 화면에 대상 차원이 존재하지 않아도 해당 차원을 통해 원하는 바를 시각화할 수 있다는 사실입니다. 다음 예제는 연도별 신규 가입 고객의 비율을 확인하는 문제입니다. 슈퍼스토어 샘플 데이터를 사용했습니다. 우선 FIXED LOD 계산식을 사용하여 고객별 가입한 날짜를 구하는 계산된 필드를 생성했습니다. 문법에 대해서는 짚고 넘어가지 않겠습니다. 다음으로는 앞서 생성한 새로운 필드를 색상 마크에 적용했습니다. 그 결과 연도별 신규 가입자의 비율을 확인할 수 있..

태블로

태블로 테이블 계산에 대해서

이번 포스팅에서는 태블로 테이블 계산에 대해 정리하겠습니다. 아래 예시는 '테이블 계산 > 누계'를 구하는 예제 데이터입니다. 차원 설정 특정 차원을 사용하여 테이블 계산을 수행해야 하는 경우가 있습니다. 이때 차원을 설정해야 하는데 어느 것을 체크해야 하는지 헷갈리기도 합니다. 체크하는 경우와 하지 않는 경우는 다음과 같이 해석할 수 있습니다. 체크하는 경우 - "XX(차원1)에 대해서" 체크하지 않는 경우 - "OO(차원2)별로" 테이블 계산을 수행합니다. 정리하면, "'차원2'별로 '차원1'에 대해서 테이블 계산을 수행합니다."처럼 해석할 수 있습니다. 위 예제에서는 빨간색 박스로 표시한 차원이 테이블 계산이 수행되는 실제 범위라고 생각하면 됩니다. 다른 예제를 하나 더 살펴보겠습니다. 이번에는 2..

truezero
데이터 공부하는 제이슨