55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
사용자정의함수
사용자 정의함수 리트코드 177번 문제입니다. CASE WHEN 구문 사용시, 제출단계에서 오류가 나네요.코드를 어떻게 수정해야하나요?코드는 강의에서 알려주신대로 그대로 작성했습니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
이 문제 inner join이 이해가 안됩니다.
DELETE p1 FROM Person p1 INNER JOIN Person p2 ON p1.Email = p2.Email WHERE p1.Id > p2.Id;inner join만 했을때 결과물p1.Id | p1.Email | p2.Id | p2.Email1 | john@example.com | 1 | john@example.com1 | john@example.com | 3 | john@example.com2 | bob@example.com | 2 | bob@example.com3 | john@example.com | 1 | john@example.com3 | john@example.com | 3 | john@example.com이 테이블에서 WHERE 조건을 걸면p1.Id | p1.Email | p2.Id | p2.Email1 | john@example.com | 1 | john@example.com1 | john@example.com | 3 | john@example.com2 | bob@example.com | 2 | bob@example.com3 | john@example.com | 3 | john@example.com이후 delete p1까지 했을때p1.Id | p1.Email1 | john@example.com1 | john@example.com // id 3인 행이 삭제돼서 inner join 조건에 맞지 않아 join이 풀리면서 합쳐짐2 | bob@example.com3 | john@example.com // id가 3인 행이 삭제돼서 삭제됐다제가 이해한대로가 맞는지 궁금합니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
평균 함수 사용할 때 주의점과 해결법
서브쿼리 > 1번째 강의에 나오는 강의 중 8분대 쯤에 나오는 이야기인데요,일주일동안의 평균을 구할 때, 특정 날짜에 데이터가 없어서 나누기 7이 아닌 6이 될 경우를 주의하라고 해주셨거든요. 그럼 특정 날짜에 데이터가 없어서 이를 보완해야할 경우,해결방법이 어떻게 되는지 간단하게 설명해주실 수 있을까요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
196. subquery로 풀 때, 궁금한 점
수업내용은 이해했습니다. 그래서 196번을 서브쿼리로 다시 풀어봤어요. DELETEFROM personWHERE id NOT IN( SELECT MIN(p.id) FROM person p GROUP BY p.email ) 에러가 나서 강사님 풀이와 비교해서 차이점은 찾았어요. 제가 생각해본 코드로 풀면 왜 에러가 날까요?다시한 번 SELECT/FROM으로 감싸줘야하는? 이유가 궁금해요. 이해가 안되면, 다음에도 이렇게 코드 짤 것 같아서 여쭤봅니다!
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
쿼리성능 질문드립니다.
lag function 을이용하여 풀어보았는데요 혹시 lag 를 사용하는것과 조인을 하는것에서 성능차이가 어느정도 발생하는지 궁금합니다 with temp as (SELECT id , num , lag(num, 1) over() as lag1 , lag(num, 2) over() as lag2 from logs ) select DISTINCT(CASE WHEN num= lag1 and lag1 = lag2 then num ELSE Null END) as consecutiveNums from temp having consecutiveNums is not null - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
리트코드 highest department salary 문제
첨부한 파일에 작성한 것과 같이 오답에서where절과 서브쿼리절에 departmentid가 왜 와야되는지 이해가 가지 않습니다.department.name 이라고 생각을 했는데앞에서 inner join을 했기 때문에 where와 서브쿼리절에 departmentid가 오는건가요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
The report 문제 order by부분 질문
다른 부분은 다 이해가 갔는데 해당 부분에 대한 order by가 왜 별도로 없어도 되는지 잘 이해가 가지 않아서 질문드립니다.If there is more than one student with the same grade (1-7) assigned to them, order those particular students by their marks in ascending order.→ 그레이드가 8미만인 경우에 해당하는 마크를 asc로 표현하는 식이 추가되어야 되는거 아닌가요?식으로 표현한다면 order by s.marks asc(order by구문에 다른 값들은 이해하였습니다)
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
리트코드 서브쿼리 문제 질문
안녕하세요 담당자님문제에서 선생님께서 해주신 풀이가 조금 어려워서 찾아보다가 해당 쿼리로 풀게 되었는데요 SELECT d.name as Department, e.name as Employee, e.salary as Salary FROM employee as e --어디에서 무엇을 구하는 지 우선적으로 나열한다 INNER JOIN department as d ON e.departmentid = d.id --2개의 테이블이 주어졌으므로 INNER JOIN 사용한다 WHERE (e.departmentid, e.salary) IN (SELECT departmentid, MAX(salary) FROM employee GROUP BY departmentid) --WHERE IN 문법을 사용하는데 후술되는 서브쿼리는 e.을 추가할 필요가 없다 오답이 나왔던 부분이서브쿼리에서 (SELECT e.departmentid, MAX(e.salary)FROM employee as e GROUP BY e.departmentid)로 작성을 하였었는데where in사이에 것과 구별할 뿐만 아니라 서브쿼리 내에서는 하나의 테이블만 단독으로 사용되므로 굳이 약어를 써서 구분할 필요가 없는게 맞을까요??WHERE (e.departmentid, e.salary) IN (SELECT departmentid, MAX(salary) FROM employee GROUP BY departmentid)
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의
아래와 같은 쿼리를 리트코드에 입력하였는데, 계속 오류가 났다고 하는데 어디가 잘못되었는지 알 수 있을까요?그리고 다른 쿼리는 작성했는데AND e.salary = dh.max_salary해당 쿼리는 생각을 못하고 그냥 SELECT 최종구문에서 MAX(Salary)를 뽑아내면 된다고 생각했는데 어떤 부분이 잘못되었는지 알 수 있을까요? 감사합니다. SELECT d.name AS Deparment , e.name AS Employee , e.salary as SalaryFROM employee AS e INNER JOIN( SELECT departmentid, MAX(salary) AS max_salary FROM employee GROUP BY departmentid ) AS dh ON dh.departmentid = e.departmentid AND e.salary = dh.max_salary INNER JOIN department AS d ON e.departmentid = d.id
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
서브쿼리의 활용사례 및 조인관련질문
특정 문제에 대한 질문이 아니라 강의 학습 중 활용에 관한 질문인데요.1.프로그래머스 스쿨과 해커랭크 등에서 배운 내용들을 적용하며 풀고 있는데, 서브쿼리를 사용하겠다는 단서를 파악할 수 있는 방법이 있을까요?어떤 경우에는 서브쿼리를 사용했는데 왜 서브쿼리를 사용해야하는지마저 떠올리지 못해서 활용을 제대로 못하고 있는거 같습니다. 조인을 할 때 left join과 inner join의 차이inner join은 보면 null값을 포함하지 않고 left join은 null값을 포함하는 것으로 인지하고 있어서웬만하면 실수를 줄이기 위해서 left join을 쓰는데 이것도 맞다고 볼 수 있을까요?긴 글 읽어주셔서 감사합니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
count(*)과 AS가 사용가능한절 TOP EARNERS문제
안녕하세요해당 문제에 대한 반복 수강으로 서브쿼리에 대한 이해가 어느정도 되었는데 문제를 외워서 푼 감도 있어서 몇 가지 여쭤봅니다 /*SELECT months*salary AS earnings, count(*)FROM employeeWHERE months*salary = (SELECT MAX(months*salary) FROM employee)GROUP BY earnings*/SELECT months*salary AS earnings, count(*)FROM employeeGROUP BY earningsHAVING earnings = (SELECT MAX(months*salary) FROM employee) 아래와 같이 쿼리를 짰는데WHERE절에는 선생님께서 earnings 알리아스로 축약한 것을 사용할 수 없다고 하시더라고요where절만 특징적으로 그런건가요?반대로 having절에서는 months*salary로는 값이 안나오고 earnings로 했을 때는 정답이 출력되어서요as가 어느절에서는 적용이 되고 안되는지 명확한 이해가 필요할 거 같습니다. 마지막에 select count(*)을 해서 최대 임금을 가진 그룹바이로 엮은 값의 수를 구하였는데이전 문제들 중 count(*)대신 전체를 셀 때 name이나 id 등으로도 가능했는데 여기서는 기준이같은 점수 예를 들어108044 jane 108044 kim이런식이어서 이름으로는 묶을 수 없는게 맞을까요?count(*)의 정의가 명확히 정립이 안된거 같습니다ㅜ감사합니다.
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
DELTE INNER JOIN 심화문제 P2적용시
INNER JOIN P2로도 적용해보라고 안내되어서해봤는데| id | email || -- | ---------------- || 2 | bob@example.com || 3 | john@example.com |결과값이 이렇게 되는데 잘이해가 되지 않습니다 ㅜㅜ앞에서는 P1으로 INNERJOIN하고 P1의 결과값만 확인해서 기준 정렬이 쉬웠는데INNER JOIN은 P1으로 하고 DELETE는 P2로 하니까 헷갈리네요 ㅜ
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
DELETE INNER JOIN 동작 원리
강의 영상 하단에 추가해주신 텍스트에 관하여 질문드립니다.[WHERE p1.Id > p2.Id] 로 필터링 하여 얻은 결과에 대해 DELETE p2였다면 p2테이블에서의 1 john@~ 레코드만 사라지고 p1(원본)에는 아무런 삭제가 이루어지지 않아야하는데 실습환경에서는 | id | email || -- | ---------------- || 2 | bob@example.com || 3 | john@example.com | 로 나왔습니다. 어떤 이유인지 궁금합니다.
- 해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL
INNER JOIN 으로 저 스스로 DELETE DUPLICATE EMAIL 문제를 풀어봤는데요
DELETE FROM Person WHERE id IN( SELECT p2.id FROM Person AS p1 INNER JOIN Person AS p2 ON p1.email=p2.email WHERE p1.id<p2.id );저스스로 작성해본 코드입니다만위와 같이 작성 후 제출하면"You can't specify target table 'p' for update in FROM clause" 라고 뜨더라구요.저번 선생님께서 알려주신 NOT IN 을 사용한 코드와 거의 비슷한 방식인거 같은데 왜 위와같은 오류가 뜨는지 알 수 있을까요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
수강 순서
고급반 들으려 하는데, ‘ 데이터 분석을 위한 SQL 실전편(무료 미니 코스)’는 고급반까지 다 듣고 수강하는 게 좋을까요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
Sql문 순서
SQL문을 작성하면 컴퓨터는 위에서부터 순서대로 읽는 게 아닌 것 같은데 진행순서가 어떻게 되나요?그래서 테이블 이름 바꾸거나 별명 붙이는 데 순서에 따라 영향을 받을 수 있는지 궁금합니다!
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
Top Earner MAX질문
SELECT * FROM ( SELECT name , MAX(months*salary) max_earnings FROM employee GROUP BY name ) total_earning ORDER BY max_earnings DESC제가 위와 같이 쿼리를 작성했었는데요, 예상과는 다르게 모든 사람들의 earnings가 보여지고 MAX earning 하나만 보여지지는 않더라고요. 그 이유가 name 으로 GROUP BY 했기 때문인가요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
Top Earner 풀 때 질문
SELECT * FROM ( SELECT name , months*salary FROM employee ) total_earnings -- 여기까지는 잘 나오는데 ORDER BY months*salary DESC--여기서 갑자기 1054(42S22) 오류처음에 위와 같이 코드를 작성했는데 오류가 발생해서 다음과 같이 시도해봤는데요.시도 1)SELECT * FROM ( SELECT name , months*salary FROM employee ) total_earnings ORDER BY employee.months*employee.salary DESC각 months랑 salary가 어디 컬럼인지 명확한 것 같지 않아서 테이블을 employee로 지정하고 해줬는데 계속 오류가 뜨더라고요. 그래서 다음과 같이 다시 시도했는데 됐어요.시도 2) SELECT * FROM ( SELECT name , months*salary earnings FROM employee ) total_earnings ORDER BY total_earnings.earnings DESC 여기 과정에서 질문이 생겼는데요!!시도 1처럼 곱셈할 때 '테이블명.컬럼명' 하면 원래 적용이 안 되는 건가요?서브쿼리 테이블명 지정할 때 alias 사용은 못하나요? 시도해봤는데 자꾸 에러가 떠서요!
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
INNER JOIN 결과
작성해주신 INNER JOIN 결과가 왜 아래와 같이 나오는지 잘 모르겠습니다.p1.Id p1.Email p2.Id p2.Email1 john@example.com 1 john@example.com1 john@example.com 3 john@example.com2 bob@example.com 2 bob@example.com3 john@example.com 1 john@example.com3 john@example.com 3 john@example.comemail을 기준으로 join한다고 했을때 id값은 어떻게 결정되나요? p1테이블에서 두번째 행에 왜 위와 같은 값이 들어가는지 잘 모르겠습니다.p1.Email = p2.Email이 같다는 조건도 이미 p2의 테이블이 형성되고 나서 위 조건을 적용하는 걸까요?
- 미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
리트코드 184번문제
안녕하세요 184번을 풀다가 의문이 생겨서요저는 LEFT JOIN을 통해서 답을 얻으려고 했는데 답이 나오진 않더라구요 LEFT JOIN 을 통해서 답을 구할 수 있는 방법은 없나요..?SELECT de.name as Department, em.name as Employee, em.Salary FROM employee as em LEFT JOIN department as de ON em.departmentId=de.id WHERE salary = (SELECT MAX(salary) FROM employee) LIMIT 3;