55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
Challenges 질문입니다.
SELECT H.hacker_id as hacker_id ,H.name as name ,COUNT(challenge_id) AS challenges_created FROM Hackers AS H INNER JOIN Challenges AS C ON H.hacker_id = C.hacker_id GROUP BY hacker_id,H.name HAVING COUNT(challenge_id) = (SELECT count(challenge_id) FROM Challenges GROUP BY hacker_id ORDER BY count(challenge_id) DESC Limit 1) OR COUNT(challenge_id) IN (( SELECT small.number FROM( SELECT count(C.challenge_id) as number , H.name as name FROM Hackers as H INNER JOIN Challenges AS C ON H.hacker_id = C.hacker_id GROUP BY H.name,H.hacker_id ) AS small GROUP BY small.number HAVING count(small.name) =1 )) ORDER BY COUNT(challenge_id) DESC,hacker_id ----------------------------------------- OR COUNT(challenge_id) IN (( SELECT small.number FROM( SELECT count(C.challenge_id) as number , H.name as name FROM Hackers as H INNER JOIN Challenges AS C ON H.hacker_id = C.hacker_id GROUP BY H.name,H.hacker_id ) AS small GROUP BY small.number HAVING count(small.name) =1 )) 이 부분에서 값을 받아오지 못하는데 잘 모르겠습니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
AS 관련
안녕하세요 강의 내용 중에 같은 Person 테이블을 INNER JOIN 할 때 테이블명 뒤에 알리아스를 붙여서 해도 동일한 결과가 나오긴 하더라고요. 아래는 제가 작성한 답안입니다. 근데 선생님께서는 알리아스를 안붙이고 하셔도 되서 알리아스를 안붙이고 쿼리를 짜도 에러가 없는 기준(?) 같은게 있는건지 궁금합니다~ (Person p1, Person p2 이렇게만 하셔서요)
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
질문있습니다.
만약 mssql 에서 윈도우함수를 사용할 수 있다면, 윈도우 함수를 사용한 것과, innerjoin, group by를 사용한 것의 차이가 무엇인가요? 예를들면, 속도가 더 빠르다거나.. 하는 것이요~
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
DELETE 문 질문입니다.
안녕하세요 DELETE 문 질문입니다. DELETE p1 << 이부분 FROM Person AS p1 INNER JOIN Person AS p2 ON p1.Email = p2.Email WHERE p1.Id > p2.Id DELETE는 FROM 으로 시작하고 FROM을 생략할 수 있다고 배웠습니다. 그래서 DELETE p1 이 부분이 FROM을 생략한 건줄 알았는데, FROM을 쓰면 error가 발생하더라고요. INNER JOIN 구문을 쓰는 경우의 예외인가요? 이부분 자세히 설명좀 부탁드립니다!
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
distinct 사용 이유
distinct를 사용하는 이유가 혹시 모를 중복이라고 하셨는데 어떤 중복이 일어날수 있는지 잘 모르겠어요ㅜㅜ
- 해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL
심화학습을 위해
2020년 추석명절을 데이터리안님과 함께 했네요. 해당 카테고리에 맞는 다양한 예제까지 알찬 기획과 강사님의 친절한 설명을 통해 많이 배웠습니다. 끝으로 강사님이 보시기에 실무에서 활용할 수 있는 도서가 있으면 추천 부탁드립니다. 아무쪼록 건강하고 행복하세요~
- 해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL
날짜 공백(Null) 처리 방법관련
먼저 질문하신 분과 같은 내용이라고 생각합니다 날짜관련 통계를 낼 때 날짜가 빠지는 것이 있으면 null로 되어 AVG, COUNT 등에서 문제가 생길 수 있다고 하셔서 1. 빠진 날짜를 찾아서 건수를 0으로 만들어 주면 되는지? 이게 맞다면 IFNULL 등으로 찾아서 하면 되는지? 2. 1번이 아니라면 추천해 주시는 해결방법은 무엇인지요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
HAVING절에서 IN 사용 가능 여부
안녕하세요. 리트코드 184. Department Highest Salary 관련 질문드립니다. 이 문제를 HAVING절 서브쿼리를 활용해서 풀 때, 풀리지 않는 이유가 궁금합니다. FROM절 서브쿼리 활용한 풀이는 이해를 했는데, 아래 HAVING절 서브쿼리로 왜 안 풀리는지도 궁금합니다..! 아래 풀이처럼 HAVING절에 IN을 쓰면 안 되는건가요? SELECT d.name AS Department , e.name AS Employee , e.salary AS Salary FROM employee e INNER JOIN department d ON e.departmentid = d.id GROUP BY d.name HAVING e.salary IN (SELECT MAX(salary) FROM employee) 선미님이 수업시간에 다뤄주셨던 질문인데, 다시 풀어보니까 기억이 안 나서... 재질문 드립니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
Window 함수를 이용한 누적 합 문의
안녕하세요. 좋은 강의 잘 들었습니다. window 관련한 누적 합 문의 드립니다. 예를들어 A, B, C 모델의 일별 판매량을 누적으로 구하고자 합니다. 1일 : 2개 , 1개, 2개 2일 : 2개 , 2개, 2개 3일 : 0개, 0개, 0개 4일 : 0개, 1개, 2개 각각 A B C의 판매량이 있을때, partition 모델명, order 날짜로 하면 - 중간에 0이 모두 있는 곳 혹은 - A라는 모델만 추출했으때 3일과 4일은 누적합의 리스트에 나오지 않는데.. 이를 해결하기 위한 팁이 있나요? 중간에 판매가 0이라도 전일 누적값이 그대로 출력되어 표현하고 싶습니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
WHERE절 ALIAS와 서브쿼리 관련 질문 드립니다
안녕하세요. WHERE절 ALIAS에 관한 질문과 서브쿼리 관련 질문 드립니다. 1. -문제: 185. Department Top Three Salaries (LeetCode) -질문: 다른 절에 적어 놓은 ALIAS를 WHERE절에서 끌어와 쓸 수 없다고 알고있는데, 아래 정답에서 dr은 왜 돌아가는지 궁금합니다. 다른 사람에게 질문했을 때, WHERE절에서 ALIAAS를 '만들 수 없다'는 말일거란 답변을 얻었는데요. WHERE절에서 ALIAS를 만들수도 없지만, 가져다 쓸수도 없는 거 아닌가요?ㅎㅎ -정답: -------------------------------------------------------------------------------------------------------------- 2. -문제: 196. Delete Duplicate Emails (LeetCode) -질문: 서브쿼리에 대한 이해가 부족해서 질문합니다. 오답처럼 서브쿼리를 하나만 쓰면 왜 안 되는지 궁금합니다. -정답: DELETE FROM Person WHERE Id NOT IN SELECT sub.min_id FROM ( SELECT Email, MIN(Id) AS min_id FROM Person GROUP BY Email ) sub) -오답: DELETE FROM person WHERE id NOT IN ( SELECT MIN(id) AS min_id FROM person GROUP BY email ) -------------------------------------------------------------------------------------------------------------- 3. -문제: 해커랭크 Top Earners -질문: 아래쿼리에서 왜 에러가 나는지, MAX와 관련이 있는건지 궁금합니다. -오답: SELECT employee_id, name, MAX(months * salary) AS total_earningsFROM employee 추가적으로, (1)GROUP BY에서 alias할 수 없고, 사칙연산 할 수 없다. (2)HAVING에서는 alias는 할수 없고. 사칙연산 할 수 있다.고 알고 있는데요. 맞나요? 어떤 블로그에서 GROUP BY에서 ALIAS을 할 수 없다고하는데, 해커랭크 Top Earners 문제풀이에서는 되는 것 같아 질문드립니다. 질문이 많은데.. 늘 친절하게 답변해주셔서 감사합니다ㅜㅜ!
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
사용자 정의함수 변수 선언에서 질문이 있습니다!
안녕하세요 선미님 :) 데잇걸즈 4기 최하나입니다. Limit , Offset 사용시 Limit N-1, 1 이렇게 표기하면 될 것 같았는데 오류가 발생하고 SET N = N-1 이렇게 변수 정의를 해줘야 하더라구요. Mysql function에서는 변수에서 연산이 안되는건가요? 아니면 Limit 에서만 변수 연산이 안되는건지 궁금합니다!! 감사합니다
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
사용자정의함수 관련 (리트코드 177번) 질문드립니다
안녕하세요:) 사용자정의 함수 문제 관련 질문드립니다. -문제: 리트코드 177. Nth Highest Salary -관련강의: 사용자정의함수 리트코드문제풀이 2 + IF 함수 -질문: 아래코드처럼, IF문에 N IS NULL을 쓰면 run code는 통과하지만, 제출이 되지 않아서 이유가 궁금합니다. -오류난 코드: CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN RETURN ( SELECT IF(N IS NULL, NULL, MIN(sub.salary)) FROM( SELECT DISTINCT salary FROM employee ORDER BY salary DESC LIMIT N )sub ); END 감사합니다:)
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
HACKER RANK THE REPORT 문제 관련 질문 드립니다.
안녕하세요! 저번에 상세한 답변 감사드립니다. 아래 문제 관련 2가지 질문 드립니다. -문제: HACKER RANK > THE REPORT 1. -질문: ORDER BY 에서 WITH문을 불러올 수 없는지 궁금합니다. with statement를 이 문제에 적용해보려고 시도했습니다. ORDER BY절에 WITH를 불러와서 써먹고 싶었는데, 오류가 뜨네요. 참고로 문제는 아직 푸는 중입니다. -오류: 오류 내용은 아래와 같고, ORDER BY를 제외하면 쿼리 에러가 나지 않습니다. ERROR 1370 (42000) at line 1: execute command denied to user '@'localhost' for routine 'counter.COUNT' -쿼리: WITH counter AS (SELECT COUNT(name) FROM sub GROUP BY grade) SELECT (CASE WHEN grade < 8 THEN name = "NULL" ELSE name END) name , grade , marks FROM (SELECT * FROM students LEFT JOIN grades ON students.marks BETWEEN grades.Min_Mark AND grades.Max_Mark ) sub ORDER BY (CASE WHEN counter < 1 THEN marks END) DESC 2. -질문: JOIN을 활용한 FROM 절에 ALIAS를 넣는게 필수인가요? 아래 쿼리에서 FROM 절 서브 쿼리 뒤에 ALIAS를 넣지 않고 쿼리를 돌리면 오류가 뜹니다. 오류에서 말하는 'derived table'의 의미가 모호한데, 정확히 어떤 뜻인가요? -오류: "Every derived table must have its own alias" -쿼리: SELECT (CASE WHEN grade < 8 THEN NULL ELSE name END) name , grade , marks FROM (SELECT * FROM students LEFT JOIN grades ON students.marks BETWEEN grades.Min_Mark AND grades.Max_Mark) sub 답변 달아주시는 분께 미리 감사합니다:)
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
강의완 관련없지만 중급sql강의 만료되서 연장가능한가요?
업무하다가 union 이랑 join group by에서 막혀서 초급/ 중급 강의 다시 찾아갔는데알고보니 3개월만료기간이있던강의들이었더라구요그래서 만료됬는데기존강의구매자들에한해서 만료기간없애거나 하실생각은없나요?
- 해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL
여러가지 풀이를 보며 생긴 궁금증
안녕하세요! 오늘도 즐겁게 공부하고 있습니다 :) 196. Delete Duplicate Emails 의 풀이들을 이해하려고 노력하던 중 생긴 질문입니다. 풀이 자체에 관한 질문이라기 보다는, 코딩 방식(?)에 대해 생긴 궁금증이라 이곳에 질문해도 될지 모르겠습니다..! 1번 풀이 DELETE FROM person WHERE id NOT IN (SELECT p2.min FROM ( SELECT email, MIN(id) AS min FROM person GROUP BY email ) p2 ) 2번 풀이 DELETE p1 FROM person AS p1 INNER JOIN person AS p2 ON p1.email = p2.email WHERE p1.id > p2.id 1번 풀이는 비교적 복잡하고 길지만 읽으면 바로 이해가 되었는데, 2번 풀이는 간결하고 예쁘지만 지금도 이해하려고 노력하고 있습니다. 그리고 사실 2번과 같은 풀이를 곧바로 이해만 한다면 '이렇게도 풀 수 있구나!'라고 감탄하지만, 반대로 이해가 안 되면 '자기만 알아보게 만들면 무슨 소용이야!' 혹은 '내가 아직 부족하구나'라고 느낍니다. 학습자 입장에서 다른 풀이를 이해하는 것이 실력 향상에 도움이 된다는 점은 매일 느끼고 있어 계속 도전하고 있지만, 과연 간결하고 예쁜 코드가 '좋은 코드'인가에 대한 의문이 듭니다!! (파이썬의 철학이 아름다운 최선의 코드라고 들었는데..) 특히 현업에서는 답을 내기만 하면 되는 것이 아닐 것 같습니다. 1번과 2번은 스타일의 차이인지, 실력의 차이인지, 속도 같은 기능의 차이인지... 어떤 차이가 있는지 궁금합니다. 그런데 써놓고 보니 최선의 코드를 만들고 동료들의 이해를 위해 주석을 다는 방법도 있겠네요.. 그렇다면 역시 답은 실력을 갈고 닦자고 자문자답을 하게 되는 것 같지만... 여전히 의문은 1번 같은 코드와 2번 같은 코드의 차이란 무엇인가 입니다! 강의와 직접적인 연관이 있는 것은 아니지만, 강의를 들으며 계속해서 여러 풀이를 시도하면서 드는 의문이기에 조심스레 질문을 남깁니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
리트코드 196. delete duplicate emails 질문
안녕하세요, 데잇걸즈 4기 정우진입니다. 강의에서 설명해주신 답안과 다르게 중간 select 절 없이 바로 MIN(id)로 연결했더니 에러가 발생하더라구요. 왜 그런지 이유가 궁금합니다. --제 답안 DELETE FROM person WHERE id NOT IN (SELECT MIN(id) AS min_id FROM person GROUP BY email) --강의답안 DELETE FROM person WHERE id NOT IN (SELECT sub.min_id FROM (SELECT email, MIN(id) AS min_id FROM person GROUP BY email) sub)
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
문제풀이 질문
안녕하세요, 데잇걸즈 4기 정우진입니다. 저는 처음에 아래 방식으로 쿼리를 짰는데 제대로 결과값이 나오지 않더라구요. 제 쿼리는 어떤 부분에서 오류가 있는 것인지 궁금합니다. SELECT * FROM (SELECT d.name AS department, e.name AS employee, e.salary AS salary FROM employee e INNER JOIN department d ON e.departmentid = d.id) n GROUP BY department HAVING salary = MAX(salary)
- 해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL
이런 방법은 어떤가요
실업무에서 연속된 숫자를 찾을 때 다음과 같은 방법을 이용하는데, 다중 셀프 조인과 비교했을 때 어떤 방식이 좀 더 효율적인지 궁금합니다. (쿼리문이 좀 엉망으로 복붙되는 듯합니다) select ConsecutiveNums = Num from ( select rk = rank () over (partition by Num order by Id) , conse = rank () over (partition by Num order by Id) + (100 - Id) , * from Logs ) as a group by Num, conse having count(*) >= 3
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
challenges_created 가 50일 때
저는 다음과 같이 쿼리를 짰습니다. challenges_created = 50 일때를 다음과 같이 challenges_created = max(challenges_created)일 때 남겨놓는 것으로 짰는데, 이럴 때 적용이 안 되더라고요. 혹시 왜 안 돼는지 알 수 있을까요? 강의에서는 group by로 한다음 select max(challenges_created)로 해서 적용하는데, 두 가지의 차이는 무엇인가요? 특히, having 에 challenges_created = max(challenges_created)만 조건을 적용하면, Null값들이 나오더라고요. 왜 null값이 나오는지도 궁금합니다ㅠ SELECT h.hacker_id AS hacker_id , h.name AS name , ch.tot AS challenges_created FROM Hackers AS h LEFT JOIN (SELECT hacker_id, count(hacker_id) AS tot FROM Challenges GROUP BY hacker_id HAVING count(hacker_id) = max(count(hacker_id))) as ch ON ch.hacker_id = h.hacker_id INNER JOIN (SELECT list.tot AS chall, count(list.tot) AS TOT FROM ( SELECT hacker_id, count(hacker_id) AS tot FROM Challenges GROUP BY hacker_id ) list GROUP by list.tot HAVING count(list.tot) = 1 OR list.tot = max(list.tot)) as list ON ch.tot = list.chall ORDER BY challenges_created DESC, hacker_id ASC
- 해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL
리트코드 Department Highest Salary
안녕하세요, 문제를 풀어보니까 다음과 같이 Null 값이 나옵니다 이런식으로 null 값이 나오더라고요, 제가 짠 쿼리는 다음과 같습니다 SELECT top_salary.Name AS Department , E.Name AS Employee , top_salary.Salary AS Salary FROM ( SELECT D.Name , max(E.Salary) AS Salary FROM Employee AS E LEFT JOIN Department AS D ON E.DepartmentId = D.Id GROUP BY D.Name ) top_salary LEFT JOIN Employee AS E ON E.Salary = top_salary.Salary ORDER BY top_salary.Salary DESC 혹시 시스템 문제인가요? 아니면 쿼리 중 오류가 있어서 그럴까요?