일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MySQL
- AWS
- Index
- storage_integration
- 문제풀이
- 율코딩
- Oracle
- sql
- 결합인덱스조건
- Join
- dfs
- 오라클
- 코딩
- 데이터분석
- 인덱스튜닝
- 인덱스
- DB
- HackerRank
- 결합인덱스란
- 개발
- 자료구조
- dbeaber
- 백트래킹
- 조인
- S3
- 데이터베이스
- 알고리즘
- 쿼리
- snowflake
- 백준
- Today
- Total
목록전체 글 (23)
율코딩
https://www.hackerrank.com/challenges/contest-leaderboard/problem?isFullScreen=true Contest Leaderboard | HackerRank Generate the contest leaderboard. www.hackerrank.com 문제 설명 해커의 전체 점수는 각 해커의 챌린지별 가장 최고 점수의 합이다. 해커 id, 이름, 전체 점수를 출력하시오 (전체 점수의 내림차순, 해커 id의 오름차순 정렬) 전체 점수가 0인 데이터는 제외한다. FROM절에서 서브쿼리로 각 챌린지별 최고점수를 구해서 메인쿼리에서 그 합을 구하는 방식으로 문제를 풀었다. 그리고 HAVING절을 이용하여 전체 점수가 0보다 크도록 조건을 걸어주었다. SELEC..
https://www.hackerrank.com/challenges/challenges/problem?isFullScreen=true Challenges | HackerRank Print the total number of challenges created by hackers. www.hackerrank.com 무슨 이유인지 HackerRank에서 MySQL에서는 with문이 안돼서 FROM 절에서 서브쿼리는 넣는 방식으로 풀었다. 우선, challeges_cnt( 도전 횟수) 가 MAX 값 이거나, challeges_cnt( 도전 횟수) 가 중복값이 없는 것만 가져와야한다. # 1번 쿼리 - challenge_cnt가 MAX인 값만 가져오기 SELECT MAX(t1.challenges_cnt) FROM..
https://www.hackerrank.com/challenges/full-score/problem Top Competitors | HackerRank Query a list of top-scoring hackers. www.hackerrank.com 만점을 받은 challenge가 2개 이상인 해커를 구하는 문제이다. 그리고 만점 받은 전체 challenge 의 수로 정렬해야한다. ( 개수가 같을 경우, hacker_id로 오름차순으로 정렬하기) 우선, 1. Submissions table에 3개의 테이블을 조인을 하고 Submissions 테이블에서 score가 만점인 데이터만 가져오도록 where에 조건을 걸었다. 2. Group by 로 hacker_id로 묶어줘야하는데 h.name도 출력해야하..
https://www.hackerrank.com/challenges/harry-potter-and-wands/problem Ollivander's Inventory | HackerRank Help pick out Ron's new wand. www.hackerrank.com 생각보다 문제가 복잡하고 어려웠다. 일단, 먼저 문제를 정리를 해보면 is_evil = 0이어야 한다. age 와 power가 같은 것들 중에 가장 coin_needed가 작은 wand를 골라야한다. SELECT W.id, P.age, W.coins_needed, W.power FROM Wands W INNER JOIN Wands_Property P ON W.code = P.code WHERE P.is_evil = 0 AND W.co..
N+1 문제란? 연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1 문제라고 한다. Eager Load Left Outer Join을 의미한다. Eager loading 을 이용하면 한 번의 쿼리문으로 모든 데이타를 추출 할 수 있으며 어플리케이션 성능 향상을 위해서 cache 기능을 적절히 이용하여 사용 할 수 있다. User.eager_load(:workspaces).where(workspaces: {id: 3}) > SELECT `users`.`id` AS t0_r0, `users`.`provider` AS t0_r1, `users`.`uid` AS t0_r2, `user..
https://www.hackerrank.com/challenges/binary-search-tree-1/problem 해당 문제는 이진 트리에 관한 문제이다. 각 노드(Root, Leaf, Inner)의 타입을 리턴하는 문제. BST table에 각 컬럼을 살펴보면, N은 각 노드의 값을 나타내고, P는 N의 부모의 값을 나타낸다. 우선 각 타입에 대해 생각을 해보면, Root는 가장 최상위 노드이므로, P가 NULL일 것이고, Leaf는 자식이 없는 노드이다. 즉, 자기 자신을 P값으로 가지는 노드가 없다는 것이다. Inner는 Root도, Leaf도 아닌 노드이다. 이제 이것을 sql로 나타내면 아래와 같다. select N, (case when p is null then 'Root' when N ..
https://www.hackerrank.com/challenges/occupations/problem?isFullScreen=true occupation 별로 순서대로 리턴을 해줘야하니 ROW_NUMBER 함수를 사용했다. GROUP BY는 GROUP BY에 정의한 내용(컬럼 또는 변형된 컬럼)만 SELECT절에 그대로 사용할 수 있다. GROUP BY에 정의하지 않은 컬럼을 SELECT절에서 사용하려면 반드시 집계함수 처리를 해야 한다. 그래서 나는 MAX 함수를 사용하였다. 사실 MAX든, MIN 이든 상관이 없다. SELECT MAX(CASE WHEN Occupation = 'Doctor' THEN name END) ,MAX(CASE WHEN Occupation = 'Professor' THEN ..