일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dfs
- 율코딩
- AWS
- 인덱스
- 조인
- 결합인덱스조건
- 데이터분석
- HackerRank
- dbeaber
- 문제풀이
- 쿼리
- 알고리즘
- Oracle
- S3
- DB
- 자료구조
- 결합인덱스란
- 오라클
- 개발
- snowflake
- 백트래킹
- sql
- Join
- Index
- 데이터베이스
- 코딩
- 백준
- MySQL
- 인덱스튜닝
- storage_integration
- Today
- Total
목록SQL (8)
율코딩
https://www.hackerrank.com/challenges/placements/problem Placements | HackerRank Write a query to output the names of those students whose best friends got offered a higher salary than them. www.hackerrank.com 문제 설명 각 학생의 friend 의 salary 가 해당 학생의 salary 보다 높은 학생의 이름을 출력하세요. ( 본인의 salary의 오름차순으로 정렬하시오) 나는 packages 테이블을 2번 조인하는 방법으로 풀었다. (1개는 본인의 salary, 다른 1개는 친구의 salary와 매치가 되도록 조인하였다.) 생각보다 간단한..
https://www.hackerrank.com/challenges/sql-projects/problem SQL Project Planning | HackerRank Write a query to output the start and end dates of projects listed by the number of days it took to complete the project in ascending order. www.hackerrank.com 이번 문제는 문제 자체가 어렵다기 보다는 접근 방식이 어려웠다. 나는 결국 풀지 못하고 Discussion을 보고 이해하였는데, 굉장히 단순하면서도 색다르게 느껴졌다. Start_Date 중 End_Date에는 없는 Start_Date는 각 연속적이지 않으므로..
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..
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 ..