55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
답안이랑 똑같이 작성했는데 오류나는데 어디가 문제인지 모르겠네요 ㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
LeetCode 177번 문제를 LIMIT과 OFFSET으로 푸는 법에서
LeetCode 177번 문제를 LIMIT과 OFFSET으로 푸는 법에서 1. CASE와 IF문으로 문제를 해결할때는 조건 NULL을 줘서 해당이 되지 않으면 NULL이 나오는데, LIMIT OFFSET은 조건 NULL을 따로 주지 않아도 안에 조건에 해당하지 않으면 자동으로 NULL값이 나오는 건가요? 2. 또한 OFFSET은 항상 LIMIT과 같이 사용해야만 하나요 ?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이 강의는 MYSQL로만 진행되나요? 아니면 MSSQL도 같이 사용하시나요 ?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
alias, where, having 그리고 group by
강의에서 where 절에서는 select 에서 만든 alias를 쓸수 없다고 하셨는데요. where 대신 having을 사용하니 alias를 사용 할수 있었고 결과도 동일하게 나왔습니다. having을 group by 없이 사용할 수 있다는게 좀 신기하더군요. 그런데, sql 을 처리 할때 순서상 select 보다 having 이 먼저 아닌가요? select가 맨 마지막인줄 알았는데 말이죠. 어떻게 가능한건지 궁금합니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
datetime 의 차이 구하기
안녕하세요. 선생님 datetime 의 차이도 구할 수 있나요? 예시) 고객이 2021년 9월 6일 12시 33분에 장바구니에 상품을 담았고 2021년 9월 6일 19시 33분에 구매완료하였을 경우 장바구니 담기 후 구매까지 걸린 시간을 구하는 수식은 어떻게 하나요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
WITH문을 WHERE절 서브쿼리에서도 사용할 수 있나요?
예를 들어, SELECT * FROM crimes WHERE date IN (SELECT DISTINCT date FROM crimes ORDER BY date DESC LIMIT 5); 위와 같은 SQL문을 WITH sub AS ( SELECT DISTINCT date FROM crimes ORDER BY date DESC LIMIT 5 ) SELECT * FROM crimes WHERE date IN sub.date 이렇게 쓸 수 있나요!?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
WHERE절 서브쿼리에서 DISTINCT 유무에 따른 차이가 있나요?
안녕하세요. 9:20 ~ [WHERE 절 서브쿼리]두 번째 쿼리를 다음과 같이 정정하니 강의 수강 시 참고 부탁드립니다. SELECT *FROM crimesWHERE date IN (SELECT distinct date FROM crimes ORDER BY date desc LIMIT 5); 위 내용을 보고 문득 궁금해진 내용인데요. 만약 order by절과 limit절이 없다면, 즉, SELECT * FROM crimes WHERE date IN (SELECT date FROM crimes) 이렇게 적은 것과 SELECT * FROM crimes WHERE date IN (SELECT distinct date FROM crimes) 이렇게 적은 것 간의 결과물에 차이가 있나요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
윈도우 함수 order by 질문
윈도우함수에서 order by 의 역할이 뭔지 이해가 안가요 ㅜ order by를 기준으로 xxx을 한다고 계속말씀하시는데 order by 뒤에 오는 컬럼이 어떤 기준이 되서 어떤 역할을 한다는 건지 이해가 너무 안가요 ㅜ 초급강의에서 배운 order by 역할이랑 똑같나요? 해당 문제에서는 그냥 id를 기준으로 오름차순으로 레코드를 정렬하라는 뜻인가요??
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
누적합 join 부분 에서 질문이 있습니다!
각 엘리베이터별 누적합계를 구하는데 1. 왜 e1.line >= e2.line 와 같은 조건이 들어가는건가요?? LINE 칼럼이 의미하는게 엘리베이터에 타는 순서라서 1명 탔을때 2명 탔을때 3명 탔을때 3가지 경우의 누적합계를 각각 구하기 위해서 위 조건을 입력하는건가요? 2. GROUP BY ID,NAME,KG,LINE 처럼 4개의 그룹을 연속해서 만들면 ID별 -> NAME별 -> KG별 -> LINE별 순으로 필터링해서 그룹이 생성되나요??
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
문제해설에 대한 질의 드립니다 ㅜ
안녕하세요. 설명중에 이해가 안가는게 있어서 질문드립니다! 질문은 강사님이 설명주신 내용 중간중간 볼드처리로 진행하겠습니다. DELETE p1 FROM Person p1 INNER JOIN Person p2 ON p1.Email = p2.Email WHERE p1.Id > p2.Id; 중요한 포인트는 같은 이메일이 반복되면, 제일 작은 Id 이외의 다른 Id를 찾아주고 이 값을 삭제해야하는 것입니다. 테이블을 Email을 기준으로 조인하게 된다면 아래처럼 보여지는데, p1.Id | p1.Email | p2.Id | p2.Email 1 | john@example.com | 1 | john@example.com 1 | john@example.com | 3 | john@example.com 2 | bob@example.com | 2 | bob@example.com 3 | john@example.com | 1 | john@example.com 3 | john@example.com | 3 | john@example.com 여기서 p1.Id 가 p2.Id 보다 크다는 기준으로 필터를 걸어준다면 p1.Id | p1.Email | p2.Id | p2.Email 3 | john@example.com | 1 | john@example.com 조건을 찾게 됩니다. ->여기까지는 이해가 됩니다. 근데 이 밑에 위의 p1.id > p2.id 조건을 p1에서 DELETE한다는게 이해가 잘안가서요. 3 | john@example.com | 1 | john@example.com 위에 결과가 p1,p2 INNER JOIN과 p1.id > p2.id 조건식으로 인해 산출된 결과이고 p1은 | Id | Email | | 1 | john@example.com | | 2 | bob@example.com | | 3 | john@example.com | 이 테이블을 말씀하시는 것 같은데 칼럼이 총 4개인 결과(조인과, 조건식으로 산출된 결과)를 칼럼이 총 2개인 테이블(p1 테이블)에서 삭제한다는게 무슨 말씀이실까요..? 저대로라면 | 3 | john@example.com | | 1 |john@example.com |가 조건식에 의해서 최종산출된 결과이니 p1에서 둘다 삭제되어 나와야 하는거 아닌가요?? | Id | Email | | 2 | bob@example.com | 이런 결과로요. 그 후 그 조건을 p1에서 DELETE 해준다면 | Id | Email | | 1 | john@example.com | | 2 | bob@example.com | | 3 | john@example.com | 테이블에서 3 john@example.com이 지워진 것이니까 | Id | Email | | 1 | john@example.com | | 2 | bob@example.com | 이런 결과가 됩니다. :)
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
leetcode 196번
리트코드 196번 delete 쓰는 문제 질문있습니다. delete문 where 절 안에 있는 SELECT sub.min_id FROM ( SELECT Email, MIN(Id) AS min_id FROM Person GROUP BY Email ) sub 이것만 돌렸을 때 왜 id, email이 전부 출력되는 건지 궁금합니다. 셀렉트 문에 sub.min_id 가 적혀 있으면 sub 테이블에서 Email로 그룹 지었을 때 id가 가장 적은 것들을 보여줘야 하지 않나요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
리트코드 196 질문입니다.
안녕하세요 강사님 1. 제가 작성한 쿼리가 왜 오류로 작동하는지 모르겠습니다. 2. 이러한 쿼리도 셀프 join이라고 말하나요? i) delete person from ( select min(id) as min_id from person group by email) temp join person on person.id = temp.min_id where temp.min_id = person.id ii) delete person from ( select min(id) as min_id from person group by email) temp join person on person.id = temp.min_id where temp.min_id = person.id ii)의 결과가, 3 | john@example.com만 남는걸로 봐서 id가 1,2인 행이 삭제된 걸 알 수 있는데 (i) 결과에서는 id가 1,2,3인 행들이 모두 살아남아요, 이유를 모르겠습니다. 추가) 이 문제에서 id를 primary key로 지정했기 때문에 select가 잘 작동안하는건가요? 만약 그런거라면, 제가 primary key를 해제하려고 코드를 작성해보았으나 수정 권한이 없다는 오류가 떠서요..
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
제가 푼 쿼리 한번 봐주실 수 있을까요? 자꾸 에러가 나서 머가 문제인지 ㅠㅠ
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN RETURN ( SELECT DISTINCT(sub.Salary) FROM --서브쿼리 이용-- -- Salart열과 덴스 랭크를 사용해서 랭크 순위 매김 (SELECT Salary, DENSE_RANK() OVER(ORDER BY Salary) AS rank FROM Employee) AS sub -- 서브쿼리 테이블에서 랭크가 N인것을 필터 조건으로 사용 WHERE sub.rank=N ); END
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
사용자 정의 함수에 대해서 문의 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요~ 중급부터해서 수업 잘 듣고 있습니다. 사용자 정의 함수를 써보려고 합니다. CREATE FUNCTION get_stdev_min (@col char,@n int, @d Int,@code int) RETURNS FLOAT As Begin Declare @stdev FLOAT Set @stdev = (select STDEVP(@col) over(partition by stockcode order by logdate rows between @n preceding and current row) from [stock].dbo.logMinute where @code = stockcode) Return @stdev End 제가 만든 쿼리는 위와 같은데 over절에서 rows between @n preceding 이부분에서 구문 에러가 납니다. @n 은 사용자정의 함수에서의 매개변수 인데 CURRENT, interger or unbounded 를 쓰라고 나옵니다. 매개변수로 받은 값을 쓰고 싶은데 어떻게 수정하면 될까요??
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
DENSE_RANK() OVER (OVER BY , PARTITION BY) 순서
안녕하세요, 나눠주신 고급 강의자료 집계함수부분에는 ORDER BY Line PARTITION BY Id 이렇게 순서로 적혀있는데, 해당 문제에서는 PAR~부터 ORD~ 순서로 문제풀이를 해주셨습니다. 어떤게 맞는건지 궁금합니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
리트코드 consecutive numbers 질문
설명해주신 쿼리 외에, 리트코드의 해설을 보면 하단처럼 풀이하는 방법도 있다고 나오는데요, INNER JOIN을 쓰지 않고도 테이블이 합쳐진거라고 이해해도 될까요? 감사합니다. SELECT DISTINCT l1.Num AS ConsecutiveNums FROM Logs l1, Logs l2, Logs l3 WHERE l1.Id = l2.Id - 1 AND l2.Id = l3.Id - 1 AND l1.Num = l2.Num AND l2.Num = l3.Num
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
delete를 사용해서 문제를 풀수 있을까요
- DELETE FROM (SELECT h.hacker_id, h.name, count(c.challenge_id) AS cc FROM hackers AS h LEFT JOIN challenges AS c ON h.hacker_id = c.hacker_id GROUP BY h.hacker_id, h.name ORDER BY cc DESC, h.hacker_id) WHERE cc > 1 AND cc < MAX(cc) 이런식으로 작성하려고 했는데 에러가 납니다. 감사합니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
COUNT 윈도우 함수를 이용해 푸는 방법
문제를 풀기 위하여 SELECT ID, NUM , COUNT(NUM) OVER (PARTITION BY NUM ORDER BY ID) FROM Logs ORDER BY ID 라고 작성했습니다. 하지만 이렇게 결과가 출력되어 연속되는 숫자를 파악할 순 없었습니다. 이 방법을 사용해서 풀 수 있는 방법은 없을까요?? [1, 1, 1], [2, 1, 2], [3, 1, 3], [4, 2, 1],[5, 1, 4], [6, 2, 2], [7, 2, 3]
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
swap salary
문제의 답이 update salary set sex = CASE WHEN SEX ='m' THEN 'f' WHEN SEX ='f' THEN 'm' ELSE END 이렇게 되면 왜 안되는거죠?? ㅠㅠㅠ
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
리트코드 Consecutive Numbers 질문드립니다!
SELECT L.Id , L.num, L1.num FROM Logs L inner JOIN LOGS L1 ON L.Id = L1.Id+1 ------------------------------------ SELECT L.Id , L.num, L1.num FROM Logs L inner JOIN LOGS L1 ON L.Id+1 = L1.Id ------------------------------------ 비슷한 문제가 나올때마다 너무 헷갈리네요.... 두 쿼리의 차이점은 JOIN의 ON절에 사용하는 조인조건을 어떤테이블에 적용해야 하느냐 입니다. ID와 ID+1한 것이 같다고 쓴 부분에 대해 생각해보면두 경우 다 ID가 2부터 출력되어야 하는것 아닌가요? 값이 왜 다르게 나오는지 모르겠습니다. 어떻게 생각하면 좀 쉬울까요?