19,800원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
쿼리 두개로 작성하고 싶지 않아 하나로 어떻게든 만들어 봤습니다.
글자 최소길이, 최대 길이 작성 from 서브쿼리에 전체 데이터 글자 작성1,2번 조인을 통해 글자 최소길이, 최대 길이의 city 구함글자수 별 city컬럼 오름차순을 통해 1순위 데이터만 출력을 위한 ROW_NUMBER함수 사용ROW_NUMBER가 1인 것만 출력이런식으로 굳이 복잡하게 풀었습니다..더 쉬운 방법이 있을 거 같은데 알려주시면 감사하겠습니다. Selectcity, lcFrom(Select city, lc, ROW_NUMBER() OVER(Partition By lc Order By city) rnFrom(Select city, length(city) lcFrom station a)ainner join(Select min(length(city)) min_c, max(length(city)) max_cFrom station)bon a.lc = b.min_c or a.lc = b.max_c)aWhere rn = 1
- 해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
이런 풀이는 왜 안되는지 궁금해요
SELECT S.id, (CASE WHEN MOD(S.id,2)=0 THEN S2.student WHEN S.id=count(S.id) THEN S.student ELSE s3.student END) AS student FROM Seat AS S INNER JOIN Seat AS S2 ON S.id -1 =S2.id INNER JOIN Seat AS S3 ON S.id +1 =S3.id;짝수, 마지막 수, 홀수 기준으로 출력해주려고 하는데, 실제 output에서는 id 2인 친구만 출력이 되네요. 어떤 부분이 틀렸는지 궁금합니다! +강의에서 COUNT(*)에 OVER문을 써야하는 이유도 궁금합니다. 그냥 COUNT(id)만 해도 같은 답이 되는 것 같은데 아닐까요 ㅠㅠ??
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
소수점 이하 숫자가 안나옵니다 ㅠㅠ
FROM절이 아닌 WITH문을 사용하여 풀이했는데 답이 안나오네요. ㅠㅠ 어떤 점이 잘못되었는지 여쭤볼 수 있을까요?WITH sub AS ( SELECT request_at, SUM(CASE WHEN status != 'completed' THEN 1 ELSE 0 END) cancel_count, COUNT(*) total_count FROM Trips INNER JOIN Users AS U1 ON Trips.client_id = U1.users_id INNER JOIN Users AS U2 ON Trips.driver_id = U2.users_id WHERE Trips.request_at BETWEEN '2013-10-01' AND '2013-10-03' AND U1.banned = 'NO' AND U2.banned = 'NO' GROUP BY request_at ) SELECT request_at AS Day, ROUND(cancel_count/total_count,2) AS 'Cancellation Rate' FROM sub;
- 해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
occupation 질문!
안녕하세요 선생님! 강의 잘 듣고 있습니다.해당 문제 이렇게도 풀이했는데 답은 정상적으로 나오나 hackerranks에서는 오답으로 나와서 질문드립니다!이렇게 풀어도 되는지, 어떤 부분에 주의해야할지 여쭤볼 수 있을까요? SELECT SUM(CASE WHEN sub.occupation='Doctor' THEN sub.name ELSE NULL END) doctor, SUM(CASE WHEN sub.occupation='Professor' THEN sub.name ELSE NULL END) professor, SUM(CASE WHEN sub.occupation='Singer' THEN sub.name ELSE NULL END) singer, SUM(CASE WHEN sub.occupation='Actor' THEN sub.name ELSE NULL END) actor FROM ( SELECT name, occupation, ROW_NUMBER() OVER(PARTITION BY occupation ORDER BY NAME) AS number FROM occupations) AS sub GROUP BY sub.number ORDER BY sub.number;SELECT (SELECT name FROM occupation WHERE occupation = 'Doctor'), (SELECT name FROM occupation WHERE occupation = 'Professor'), (SELECT name FROM occupation WHERE occupation = 'Singer'), (SELECT name FROM occupation WHERE occupation = 'Actor') FROM occupation ORDER BY name
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
set1. Contest Leaderboard 질문드려요!
안녕하세요. Contest Leaderboard 를 풀다가 궁금한 점이 있어서 질문드립니다. 선미님은 FROM 절 서브쿼리로 문제를 푸셨는데, 저는 SELECT절 서브쿼리로 풀고 있었습니다. 토대가 되는 쿼리는 비슷한 것 같은데 오류가 나네욥 ㅠㅠ 아래 쿼리 한번만 확인해주시면 감사합니다. 더불어 본문제에서는 SELECT절 서브쿼리가 FROM절 서브쿼리보다 별로인가요? SELECT h.hacker_id , h.name , (SELECT SUM(max_score) AS mx FROM ( SELECT hacker_id , challenge_id , MAX(score) AS max_score FROM submissions GROUP BY hacker_id, challenge_id ) sub WHERE s.hacker_id = sub.hacker_id GROUP BY hacker_id HAVING mx != 0 ) total_scoreFROM submissions s INNER JOIN hackers h ON h.hacker_id = s.hacker_idGROUP BY h.hacker_id, h.nameORDER BY total_score DESC, h.hacker_id
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
알리아스를 하신 rnk와 관련하여 질문이 있어요!
안녕하세요! 강의 잘 보고 있어요. 다름이 아니라 알리아스 하신 rnk에 관련하여 질문이 있어요. (ORDER BY start_date) rnk 와 (ORDER BY end_date) rnk가 알리아스 이름이 같던데 알리아스의 이름이 같아도 상관이 없는 건가요?? 저는 참고로 알리아스 이름이 같으면 안되는 것 같아서, 각각 rn_1, rn_2로 이름을 구분시켜 놓았어요!
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
MIN 관련 질문이 있어요!
안녕하세요:) 강의 잘 듣고 있어요 현 게시판에 이미 게시되어있는 MIN에 관한 질문이 있어서 이렇게 글을 남겨요. 피봇팅을 할때 마지막에 MIN을 붙여서 쿼리를 완성하셨는데, 그렇다면 만약에 MIN을 붙이지 않아도 되는 건가요? MIN을 안 붙이고 했는데 오류가 뜨더라고요. 이 부분에 대해 설명해주시면 감사드릴게요! SELECT CASE WHEN Occupation = 'Doctor' THEN Name Else Null END , CASE WHEN Occupation = 'Professor' THEN Name Else Null END , CASE WHEN Occupation = 'Singer' THEN Name Else Null END , CASE WHEN Occupation = 'Actor' THEN Name Else Null END FROM ( SELECT occupation , name , ROW_NUMBER() over (PARTITION BY Occupation ORDER BY Name) rn FROM Occupations ) AS a GROUP BY rn ORDER BY rn;
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
WHERE 절에 서브쿼리를 만들어서 문제를 풀 수 있나요?
안녕하세요! 강의 잘 듣고 있어요. 다름이 아니라 혹시 FROM절이 아닌 WHERE 절에 서브쿼리를 넣어서 문제를 풀 수 있는 방법이 있을까요? 제가 아래와 같이 WHERE절에 서브쿼리를 넣었는데, 어떤 점이 잘못 되었는지 피드백 주시면 감사드릴게요. SELECT H.hacker_id, H.name, SUM(S.score) FROM Hackers H INNER JOIN Submissions S ON H.hacker_id = S.hacker_id WHERE S.score = ( SELECT H.hacker_id, S.challenge_id, MAX(S.score) FROM Submissions GROUP BY hacker_id, challenge_id ) AS A GROUP BY H.hacker_id, H.name HAVING SUM(S.score) > 0 ORDER BY SUM(S.score), H.hacker_id;
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
MIN (CASE WHEN occupation = 'Doctor' THEN name ELSE NULL END) doctor 에서
안녕하세요? 항상 좋은 강의 해주셔서 감사드립니다. MIN (CASE WHEN occupation = 'Doctor' THEN name ELSE NULL END) doctor 에서 Aggregation Function 을 아무거나 쓰셔도 된다고 하시고 MIN 함수를 사용하셨는데, 그럼 MAX 를 써도 되는건가요? 저기서 MIN 을 쓰는 이유가 GROUP BY rn 으로 묶어야 하기 떄문에 쓰는건가요? 정확하게 MIN 을 쓰는 이유가 이해가 되지 않아서 문의 드립니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
Contest Leaderboard 관련 질문
안녕하세요? 항상 좋은 강의 해주셔서 감사드립니다. 다름이 아니라, Contest Leaderboard 와 관련하여, 아래와 같은 풀이법은 안되는건가요? Count 한 결과를 서브쿼리로 나타내셨는데, 저는 그게 아니라 Count 한 서브쿼리들을 기본 Company Table 에서 company_code 를 중복제거 한 뒤에 company_code 기준으로 left join 하는걸 생각했는데요. Run Code 하면 답은 안나오는데, 왜 안나오는건지 궁금해서요. 이렇게 접근 하는 개념이 제가 놓치고 있는 게 있나 해서 여쭤봅니다. SELECT DISTINCT c.company_code , c.founder , Count_L , Count_S , Count_M , Count_E FROM Company C LEFT JOIN ( SELECT company_code, COUNT(DISTINCT lead_manager_code) as Count_L FROM Lead_Manager ) L ON C.company_code = L.company_code LEFT JOIN( SELECT company_code, COUNT(DISTINCT senior_manager_code) as Count_S FROM Senior_Manager) S ON C.company_code = S.company_code LEFT JOIN( SELECT company_code, COUNT(DISTINCT manager_code) as Count_M FROM Manager) M ON C.company_code = M.company_code LEFT JOIN( SELECT company_code, COUNT(DISTINCT employee_code) as Count_E FROM Employee) E ON C.company_code = E.company_code
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
Group by 사용 시 SELECT 절에 언급 관련
안녕하세요. SQL 초급에서 GROUP BY 를 사용할 때는, 그룹화의 기준이 되는 컬럼을 SELECT 구문에 반드시 적으라고 배웠던 것으로 기억합니다. 그런데 이 문제에서는 GROUP BY 에 rn을 적었지만 SELECT 에 rn을 지운 상태로 결과물을 출력하게 되더라구요. 그래서 GROUP BY에 사용한 컬럼을 어떤 경우에는 반드시 적어야 하고, 또 어떤 경우에는 적지 않아도 괜찮은지 궁금합니다. 그럼 편하신 때에 답변 부탁드리겠습니다. 감사합니다!
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
다른풀이방법
안녕하세요 문제에서는 각각 다른 쿼리로 작성가능하다고 하는데 하나의 쿼리로 구할수없을지 궁금합니다. UNION을 사용하여 두개의 쿼리를 합칠려하는데 이방법이 맞는지 궁금합니다. 작성한 쿼리는 아래와 같습니다. SELECT CITY, LENGTH(CITY) FROM ( SELECT CITY, MIN(LENGTH(CITY)) FROM STATION ORDER BY LENGTH(CITY),CITY )AS A UNION SELECT CITY, LENGTH(CITY) FROM ( SELECT CITY, MAX(LENGTH(CITY)) FROM STATION ORDER BY LENGTH(CITY) DESC,CITY )AS b
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
짝수개 일 경우에도 문제가 없나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 풀이에서 나온 방법이, lat_n 이 짝수개 있는 경우에도 사용 가능 한 것인가요? 조건절에서 p_rn = 0.5로 해 놓았는데, lat_n의 갯수(n)가 짝수개인 경우, 이 조건을 n/2 번째와 n/2+1 에서 만족하나요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
ROW의 순서가 갑자기 바뀌는 이유
안녕하세요, 해당 문제에 대해 질문드립니다. 해당 쿼리의 서브쿼리만 돌렸을 경우, 결과에서 ["2013-10-03", 1, 2], ["2013-10-02", 0, 2], ["2013-10-01", 1, 3] 가 나오는데, 해당 순서는 10/3 --> 10/2 --> 10/1 입니다. 하지만 해당 쿼리를 서브쿼리로 만들어 최종 쿼리를 돌렸을 경우, 결과에서 ["2013-10-01", 0.33], ["2013-10-02", 0.00], ["2013-10-03", 0.50] 로 나옵니다. (답) 갑자기 1일부터 3일로 순서가 바뀌는 이유를 알 수 있을까요??
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
서브쿼리로 문제를 풀고 싶습니다.
다만 아래의 서브 쿼리는 에러를 발생합니다. 붉은 줄은 4라인이나 실제 에러는 5라인이 발생시킵니다. 제가 원하는 것은 "group by에서 날짜별로 묶음 select의 서브 쿼리에서 status가 complete이 아닌 ID의 갯수를 셈" 입니다. 어떻게 수정하면 좋을까요
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
SELECT에서 만든 field, SELECT에서 재사용하기
안녕하세요, SELECT에서 만든 field, SELECT에서 재사용할 수 있나요? 강의 마지막 부분에 언급하신게 굳이 서브쿼리로 묶을 필요 없다고 하셨습니다만, 서브 쿼리로 묶지 않으면 아래에서 활용이 불가능하던군요. cancel_count를 참조할 수 없다는 에러가 뜨네요. 서브 쿼리를 쓰지 않고 이 문제를 풀 수 있나요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
주석달기 에러
안녕하세요, 아래와 같은 사진에서 마지막 두줄 주석을 /**/이 아닌 --으로 하면 에러가 발생하는데요, 그 이유가 무엇인지 궁금합니다
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
데이터리안처럼 실무자가 되기 위해서
데이터리안처럼 실무자가 되기 위해서 다음으로 배워야 할 내용은 무엇일까요?SQL 심화? 혹은 다른 데이터 분석 툴? 만일 SQL을 더욱 심화해서 배워야 한다면 어디서 더욱 배울 수 있을까요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
COUNT(*)에서 WINDOW함수 쓰는 이유
궁금해서 FROM절 서브쿼리에 있는 COUNT(*) OVER ()과 그냥 COUNT(*)를 적용해봤습니다. 후자는 오류가 뜨더군요! 1. 이유를 알고 싶습니다. 윈도우 함수의 갯수를 셀 때, 꼭 윈도우 함수를 적용해야 하나요? -----추가질문 ------ SELECT CASE WHEN MOD(MAX(RN),2)=1 THEN 'ASD' ELSE NULL END FROM (SELECT LAT_N , ROW_NUMBER() OVER (ORDER BY LAT_N) RN FROM STATION) T2 2. ASD는 그냥 넣은거구요, 저런 식으로 SELECT 절에서Max(RN)으로 바로 사용해 행의 갯수를 세어 쿼리를 꾸려나가는 것은 안되나요?? 3. CASE WHEN 절에서 THEN 다음에 SELECT 절을 넣어 값을 받게 쿼리를 짰는데, 이런 구문은 왜 안되는 건가요?
- 해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
NOT IN은 왜 안될까요..?
위 쿼리가 정답 쿼리인데요. 이 쿼리를 아래와 같이 바꾸면 답이 안되는 이유가 무엇일까요...?