일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 인덱스튜닝
- 데이터베이스
- 문제풀이
- dbeaber
- 인덱스
- S3
- 자료구조
- storage_integration
- sql
- 율코딩
- 데이터분석
- HackerRank
- 결합인덱스조건
- 쿼리
- Oracle
- 오라클
- 코딩
- AWS
- 백준
- 결합인덱스란
- 알고리즘
- Index
- Join
- snowflake
- 백트래킹
- 개발
- DB
- 조인
- dfs
- Today
- Total
목록MySQL (10)
율코딩
NL 조인 ( Nested Loops 조인) NL 조인은 두 테이블이 조인을 할 때, 드라이빙 테이블( Outer 테이블)에서 결합 조건에 일치하는 레코드를 내부 테이블(Inner Table)에서 조인하는 방식이다. Outer Join 에서 만족하는 레코드가 적을수록 NL 조인에서 효율이 좋다. 조인 조건에 해당하는 컬럼들은 인덱스를 가지고 있어야 한다. NL 조인의 예시를 보자. 아래와 같은 SQL문이 있다고 하자. SELECT /*+ USE_NL (B) */ A.* , B.* FROM ITEM A ,UITEM B WHERE A.ITEM_ID=B.ITEM_ID --- 1 AND A.ITEM_TYPE_CD = '100100' --- 2 AND A.SALE_YN = 'Y' --- 3 AND B.SALE_Y..
인덱스를 타지 않는 경우 1. 인덱스 컬럼의 변형 select * from table where LOWER(name) ='word'; select * from table where idx - 1 = 5; 이 처럼 인덱스에 변형을 가하게 되면, DBMS가 인덱스를 이용하지 않는다. 2. 인덱스 컬럼의 내부적인 데이터 변환 select * from table where age = '30' 문자값 데이터타입을 갖는 컬럼에 ‘값’ → 값 을 하지 말고 정확한 데이터 타입을 넣어야 인덱스를 탈 수 있다. 3. NOT 또는 IN 연산자 사용 NOT일 경우에도 인덱스를 타긴 타지만, 일반적으로, NOT에 사용된 값이 아닌 데이터의 비율이 높은 경우가 많기 때문에 인덱스를 타지 않는 경우가 많다. 마찬가지로 IN일 경..
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..