SQL 14

해커랭크 Top Competitors

주의사항 : JOIN시 컬럼을 잘 확인하자 문제 자체가 어렵진 않지만 컬럼 제대로 확인 안하고 조인하다가 한참 헤맸다 ✅문제 요약 : 둘 이상의 도전에서 만점을 받은 해커의 id,이름 출력 만점을 받은 도전 횟수 내림차순 정렬하며 동일할 경우 해커 아이디 오름차순 정렬 select h.hacker_id,h.name from Hackers as h inner join Submissions as s on s.hacker_id=h.hacker_id inner join Challenges as c on c.challenge_id=s.challenge_id inner join Difficulty as d on c.difficulty_level=d.difficulty_level where s.score=d.scor..

SQL 2023.01.09

MySQL 시간 차이 계산

last_event-next_event MySQL은 이런 식으로 시간 계산이 불가능하다고 한다. TIMESTAMPDIFF(SECOND,last_event(연산 뒷부분),next_event(연산 앞부분)) 이렇게 TIMESTAMPDFF 함수를 써야한다. 뒤의 컬럼에서 앞의 컬럼을 빼준다고 하니 쓸 때 잘 확인해야한다. SECOND에 들어가는 단위는 다른 것도 가능하다. SECOND : 초 MINUTE : 분 HOUR : 시 DAY : 일 WEEK : 주 MONTH : 월 QUARTER : 분기 YEAR : 연

SQL 2022.08.19

리트코드(LeetCode) MySQL-Consecutive Numbers

1️⃣ JOIN으로 풀기 SELECT DISTINCT l1.num as ConsecutiveNums FROM Logs as l1 INNER JOIN Logs as l2 ON l1.id +1= l2.id INNER JOIN Logs as l3 ON l2.id +1= l3.id WHERE l1.num=l2.num AND l1.num=l3.num 1. DISTINCT를 붙이는 이유 : 동일한 숫자가 4번 나올 경우 두 개의 아이디에서 조건이 성립된다. 이 경우 같은 숫자가 2번 나올 수 있기에 DISTINCT를 넣는다. 2. WHERE 조건 2번 쓰기 처음에 l1.num=l2.num=l3.num으로 썼는데 , Run Code에서는 되고, Submit에서는 에러가 떴다. 이렇게 쓰면 비교가 안되는건가...? 어..

SQL 2022.08.09

SQL - 행별로 다른 누적합을 구하고 싶다면

셀프 조인을 하면 된다. 예를 들어 해당 날짜로부터 3일 전~해당날짜에 있는 컬럼의 금액들을 모두 합하고 싶다면 SELECT r1.order_date, SUM(r2.cost) as sum_3day FROM records as r1 LEFT JOIN records as r2 ON r1.order_date BETWEEN DATE_ADD(r2.order_date, INTERVAL -3 DAY) AND r2.order_date GROUP BY r1.order_date 이런 식으로 해주면 될 듯하다. 셀프조인으로 풀 생각은 안해본 나를 반성한다.

SQL 2022.08.08
반응형