38,500원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
제코드에 오류가 있었을까요??
select E.Name as Employee from Employee as E inner join Employee as M on E.id = M.id where E.salary > M.salary ; 실행해도 values가 빈리스트로 나오더라구요. Output {"headers": ["Employee"], "values": []} Diff Expected {"headers": ["Employee"], "values": [["Joe"]]}
- 미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
group by에 두 개 이상의 column을 쓰는 경우
마지막 hackerrank 상위 문제에서 (union 문제) -- SELECT x,y From Functions WHERE x=y GROUP BY x, y HAVING COUNT(x)=2 -- 이 부분의 group by를 해결하는 데에 어려움을 겪었습니다 group by에 두 개 이상의 column을 쓰는 것이 잘 이해가 되지 않아 검색하다가 해당 링크를 찾았는데요 https://dev.mysql.com/doc/refman/8.0/en/group-by-modifiers.html 제가 판단하기로는 group by에 복수 column을 쓰는 경우 곱진법(모든 경우의 수..?)에 의해 모든 가능한 수가 다 나오므로 가능한 것 같더라고요.. 해당 문제에서 ' group by x,y ' 를 쓴 이유도 마찬가지인가요..?? 모든 가능한 수를 중복되지 않게 보이기 위해..???
- 미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
self join 제가 이해한 게 맞는지 확인받고 싶어요!!
두 가지 확실치 않은 부분이 있어 질문드립니다 우선 제가 쓴 코드를 첨부합니다 (결과는 accepted 였습니다) SELECT em1.name AS Employee FROM Employee em1 LEFT JOIN Employee em2 ON em1.managerid = em2.id WHERE em1.salary > em2.salary 1. 제가 강의를 보기 전 self join에 대해 검색하여 다른 사람들의 코드를 참고한 뒤 이러한 코드를 작성하였는데요, em1과 em2가 이름을 지정해 준 건 알겠는데 as를 써 주지 않아도 괜찮은 건가요? 2. null 값이 있어 left join을 썼는데, 선생님께서는 inner join을 쓰시더라고요 효과적으로 null 값을 제거하기 위해 그러한 것이라고 생각하는데, 만약 제 방식대로 left join을 쓴다면 탐색시간(?)이 더 길어져서 서버를 더 많이 잡아먹는 방식이 될까요? 그러니까, 불필요한 작업을 추가하는건가요 아니면 별 차이가 없을까요? null값이 있으면 보다 확실한 결과를 얻기 위해 left join을 쓰고 싶은데 만약 이 방식이 불필요하게 시간을 늘리는 것이라면 지양해야 되겠죠?ㅠㅠ
- 미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
CASE 해커랭크 문제
CASE 해커랭크 문제를 풀때 END , * 에서 ERROR가 발생합니다. ERROR 1064가 뜨는대 그 이유가 궁금합니다
- 미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
세미콜론
마지막에 세미콜론이 들어가야하는 언어는 무엇이고 아닌언어는 무엇인지 궁금합니다
- 해결됨[백문이불여일타] 데이터 분석을 위한 중급 SQL
top earners 문제 having 을 이용해서 풀 수 없을까요
안녕하세요 group by를 이용해서 풀어주셨는데, select months*salary as earnings, count(name) from Employee Group by earnings Having earnings=max(earnings) 이렇게 마지막에 having으로 조건을 걸어서 도출해보려 했더니 having을 넣지 않았을 때와 똑같은 결과값이 나오더라고요. 이 코드가 시행되지 않는 이유를 알 수 있을까요? 그리고 한 가지 더 질문은 select에서 months와 salary를 이용해 earnings라고 새로 정의했는데요 select months*salary as earnings, max(earnings) from Employee 라고 하면 Unknown column 'earnings' in 'field list' 라는 오류가 뜨더라고요, select에서 바로 앞에 정의한 변수는 다음 변수로 사용이 불가능한거 같은데 group by에서는 어떻게 바로 쓸 수 있는지 작동 순서가 혼란스러워서 이 부분에 대해서 설명해주실 수 있을까요?
- 미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
섹션2 - CASE 문제 풀이 재질문
질문이 명확하지 않았네요 ㅠ 죄송합니다. 제가 궁금한 점은 WHEN A + B <= C OR A + C <= B OR B + C <= A THEN 'Not A Triangle' 여기 WHEN절을 살펴보면 비교대상이 A, B, C 이 세가지만 존재하기 때문에 비교를 3번만하고 끝이 났지만 만약 비교대상이 A, B, C, D, E , .... , Y , Z 같이 굉장히 많아질 경우 WHEN A 와 B 비교 AND B 와 C의 비교 AND C와 D의 비교 .... 무수히 많은 비교 ... Y 랑 Z의 비교 THEN '무수히 많은 비교의 끝에 얻은 보람' 이런 식으로 WHNE이 굉장히 길어지기 마련인데, 이러한 경우 효율성이 굉장히 떨어진다고 생각되고 만약 쿼리문을 수정해야하는 상황이 되었을 경우 어디를 수정해야하는지 잘 모르는 결과를 초래한다고 생각합니다. 혹시 위와 같은 상황을 효율적으로 해결하는 방안이 있을까요? 입니다! 아무리 고민해봐도 효율적으로 해결하는 방법이 보이지 않아서 질문드렸습니다 ㅜ 바쁘신 시간 쪼개서 답변 해주셔서 감사합니다 :)
- 미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
case 문을 이해하기 위해 직접 sql editor에 코드를 작성해 보았는데 질문이 있습니다
SELECT CASE WHEN employeeid > 0 AND employeeid<5 THEN '사원' WHEN employeeid > 5 AND employeeid<10 THEN '과장' ELSE '사장' END AS new, * FROM orders GROUP BY new -- 이렇게 코드를 짰고요 결과물은 이렇습니다 Number of Records: 3 new OrderID CustomerID EmployeeID OrderDate ShipperID 과장 10249 81 6 1996-07-05 1 사원 10250 34 4 1996-07-08 2 사장 10248 90 5 1996-07-04 3 여기서 궁금한 점은, 코드를 보시면 아시겠지만 저는 SELECT 안에 new로 정의된 CASE문과 *를 넣었는데요, 그렇다면 new 라는 GROUP 옆에 있는 값들은,, 무슨 값인가요? 평균값이나 COUNT 값도 아닌 것 같고, 카테고리 안에는 분명 다양한 값이 있어야 할 텐데 (왜냐면 원래의 값에 0~5의 값이 한 개가 아니었고(사원의 경우) 그건 다른 case들도 마찬가지) 왜 하나만 나오는 걸까요?? 저 값은 무슨 값인가요?? 그냥 임의로 하나의 값, 혹은 가장 위에 있는 값만 뽑는 건가요? ㅠㅠ
- 미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
섹션 2- CASE 해커랭크 문제 풀이 질문
일단 저는 Select CASE WHEN A + B <= C OR A + C <= B OR B + C <= A THEN 'Not A Triangle' WHEN A = B AND A = C THEN 'Equilateral' WHEN A = B OR A = C OR B = C THEN 'Isosceles' WHEN A != B AND A !=C AND B != C THEN 'Scalene' END FROM TRIANGLES 위와 같이 문제를 해결했고, 선생님도 거의 비슷하게 문제를 해결한 것을 확인했습니다. 지금 문제와 같은 경우 AND, OR의 개수가 각각의 WHEN 절에 3개 이하가 존재해서 위와 같이 하드코딩으로 적어도 큰 문제가 없다고 보지만, 만약 AND와 OR의 조건의 개수가 점점 늘어나게 된다면 위와 같은 방식은 여러가지 의미로 좋지않다고 생각합니다. 혹시 AND나 OR 같은 조건의 개수를 줄일 수 있는 방법이 있다면 어떻게 하면 효율적으로 AND나 OR을 줄일 수 있을지 알 수 있을까요?
- 해결됨[백문이불여일타] 데이터 분석을 위한 중급 SQL
GROUP BY에 대해 제가 이해한 개념이 맞는지 궁금합니다
제가 이해하기로는 , GROUP BY로 묶을 경우 그것을 기준으로 하나의 column이 형성되는 것처럼 인식하는 듯 한데, 맞나요? 그러니까 GROUP BY를 기준으로 데이터를 재배열하는것,,이 맞나요?
- 해결됨[백문이불여일타] 데이터 분석을 위한 중급 SQL
SUM() 함수 문의
안녕하세요- 리트코드 1179 Reformat Department Table 문제 풀이에서 SUM() 을 왜 사용하는건가요? ㅠ.ㅠ 선생님 해설 이전에 sum 을 사용하지 않고 코드를 실행했더니 jan 값이 두개가 null 이 출력되면서 오답이라고 떴는데, 여기서 왜 SUM 함수를 사용해야 제대로된값이 출력되는지 흐름이 이해가안됩니다 ㅠ_ㅠ
- 미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
max/min vs. order by + limit 질문
안녕하세요, 최대값과 최소값 찾는 방법에 대해 질문드려요. 가장 쉬운 방법으로는 MAX() 와 MIN()를 쓰는 방법이 있는데, 수업 중에 선생님께서 order by ___ desc, limit 1 와 order by ___ asc, limit 1도 가르쳐주셔서 차이점을 여쭤보아요. 어떤 경우에 어떤 방식을 쓰면 되나요? 감사합니다!
- 미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
해커뱅크 top earners 질문
안녕하세요, 해커뱅크 top earners 문제와 관련하여 질문드려요. ---------------------------------------------------- SELECT months*salary AS earnings , count(earnings) -- 여기에 earnings를 카운트하고 싶어서 이렇게 넣었는데 자꾸 오류가 나더라구요, 왜 그런가요? FROM employee GROUP BY earnings ORDER BY earnings DESC LIMIT 1 ---------------------------------------------------- ---------------------------------------------------- SELECT MAX(months*salary) AS earnings, COUNT(earnings) FROM employee -- 이건 제가 짠 코드인데, 에러 이유를 잘 모르겠어요! 1) 맥스 연봉을 earnings라고 하고, 2) 그 값을 찾고 3) 그 값을 가진 사람들이 몇 명인지 카운트를 하면 될 것 같은데 에러가 뜨더라구요. 혹시 설명해주실 수 있나요? ---------------------------------------------------- 감사합니다!