inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

서브쿼리의 활용사례 및 조인관련질문

미해결

[백문이불여일타] 데이터 분석을 위한 고급 SQL

특정 문제에 대한 질문이 아니라 강의 학습 중 활용에 관한 질문인데요. 1. 프로그래머스 스쿨과 해커랭크 등에서 배운 내용들을 적용하며 풀고 있는데, 서브쿼리를 사용하겠다는 단서를 파악할 수 있는 방법이 있을까요? 어떤 경우에는 서브쿼리를 사용했는데 왜 서브쿼리를 사용해야하는지마저 떠올리지 못해서 활용을 제대로 못하고 있는거 같습니다. 조인을 할 때 left join과 inner join의 차이 inner join은 보면 null값을 포함하지 않고 left join은 null값을 포함하는 것으로 인지하고 있어서 웬만하면 실수를 줄이기 위해서 left join을 쓰는데 이것도 맞다고 볼 수 있을까요? 긴 글 읽어주셔서 감사합니다.

  • sql
David Lee 댓글 1 좋아요 0 조회수 301

JOIN, 서브쿼리 결과 정렬 질문

미해결

[개념은 호옹~, 실습 빡] SQL 데이터 분석, 활용!

-- 4. 강의별 평균 학점, 꿀강의 TOP 3 조회 SELECT courses.title AS "강의명", ROUND(AVG(grade_points.point), 2) AS "평균 학점" FROM courses JOIN grades ON grades.course_id = courses.id JOIN grade_points ON grade_points.grade = grades.grade GROUP BY courses.title ORDER BY AVG(point) DESC LIMIT 3 ; -- 서브쿼리 이용 답 SELECT courses.title AS "강의명", ggul_courses.round AS "평균 학점" FROM courses JOIN ( -- 강의별_평균학점 SELECT course_id, ROUND(AVG(grade_points.point), 2) FROM grades JOIN grade_points ON grade_points.grade = grades.grade GROUP BY course_id HAVING AVG(point) > ( -- 모든_강의의_평균_학점 SELECT AVG(point) FROM grades JOIN grade_points ON grade_points.grade = grades.grade ) ORDER BY AVG(point) DESC LIMIT 3 ) AS ggul_courses ON ggul_courses.course_id = courses.id ; 일반 JOIN이용과 서브쿼리 이용 결과가 다르게 출력되는데 서브쿼리 안에서 정렬을 했지만 최종 결과는 정렬이 되지 않네요? 왜 그런건가요..? 이러면 JOIN이 더 나은 걸까요?

  • sql
  • postgresql
  • dbms/rdbms
상괭이 댓글 1 좋아요 0 조회수 400

JOIN만 사용 vs 서브쿼리 사용

미해결

[개념은 호옹~, 실습 빡] SQL 데이터 분석, 활용!

-- 3. 평균 학점이 3.5미만인 학생은? SELECT students.nickname AS "닉네임", ROUND(AVG(grade_points.point),2) AS "평균 학점" FROM students JOIN grades ON grades.student_id = students.id JOIN grade_points ON grade_points.grade = grades.grade GROUP BY students.nickname HAVING 3.5 > AVG(grade_points.point) ; -- 서브 쿼리 이용 답 SELECT students.nickname AS "닉네임", avg_grade_point.round AS "평균 학점" FROM students JOIN (-- 학생별_평균_학점 SELECT student_id, ROUND(AVG(point), 2) FROM grades JOIN grade_points ON grade_points.grade = grades.grade GROUP BY student_id HAVING AVG(point) < 3.5 ) AS avg_grade_point ON avg_grade_point.student_id = students.id ; 서브 쿼리를 이용하려고 생각하는 게 좋을까요? 단순히 JOIN만 사용해서 할 수 있으면 JOIN만 써도 괜찮을까요..? 현업에서는 어떤 걸 더 많이 쓰게 될지 궁금합니다!

  • sql
  • postgresql
  • dbms/rdbms
상괭이 댓글 1 좋아요 0 조회수 581

Average Population 질문 있습니다.

미해결

[백문이불여일타] 데이터 분석을 위한 중급 SQL

답이 SELECT ROUND(AVG(population)) FROM city; 이건데 SELECT AVG(POPULATION) AS AVG_POP FROM CITY WHERE ROUND(AVG_POP, 0); 이렇게 하면 안되던데 WHERE 을 쓰면 안되는건가요?

  • sql
hipass4 댓글 1 좋아요 0 조회수 272

count(*)과 AS가 사용가능한절 TOP EARNERS문제

미해결

[백문이불여일타] 데이터 분석을 위한 고급 SQL

안녕하세요 해당 문제에 대한 반복 수강으로 서브쿼리에 대한 이해가 어느정도 되었는데 문제를 외워서 푼 감도 있어서 몇 가지 여쭤봅니다 /*SELECT months*salary AS earnings, count(*) FROM employee WHERE months*salary = (SELECT MAX(months*salary) FROM employee) GROUP BY earnings*/ SELECT months*salary AS earnings, count(*) FROM employee GROUP BY earnings HAVING 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
David Lee 댓글 2 좋아요 0 조회수 269

cafe 테이블을 언제 만들었나요..?

미해결

[개념은 호옹~, 실습 빡] SQL 데이터 분석, 활용!

cafe 테이블을 언제 만들었나요..? 만든 적이 없는데 만들어져 있으시네요

  • sql
  • postgresql
  • dbms/rdbms
상괭이 댓글 1 좋아요 0 조회수 287

order by 정렬 문의

미해결

다양한 사례로 익히는 SQL 데이터 분석

안녕하세요 강사님 group by + distinct를 비교해보다 이유는 모르겠지만 위에 distinct를 넣은 것은 day 컬럼이 자동으로 정렬이 되었고 아래의 distinct를 넣지 않은 컬럼은 정렬 되지 않았습니다 아래도 역시 distinct 를 넣으니 자동 오름차순이 되었습니다 ( count ( DISTINCT oi.order_id)) 혹시 그 이유가 궁금합니다 또, order by 처리 시 쿼리 속도가 느려진다는 말이 있는데 이런식으로 order by 를 넣지 않고 자동 정렬 되는 것이 있다면 쿼리 속도 향상에 도움이 될까요? 쿼리문 자동 정렬 SELECT date_part ( 'day', o.order_date) AS DAY , sum (amount) AS sum_amount , count ( DISTINCT o.order_id) AS daily_ord_cut FROM orders o , order_items oi WHERE 1 = 1 AND o.order_id = oi.order_id GROUP BY date_part ( 'day', o.order_date) ORDER BY 1 ; 정렬 안됨 SELECT date_part ( 'day', o.order_date) AS DAY , sum (amount) AS sum_amount , count ( oi.order_id) AS daily_ord_cut FROM orders o , order_items oi WHERE 1 = 1 AND o.order_id = oi.order_id GROUP BY date_part ( 'day', o.order_date);

  • sql
  • postgresql
  • dbms/rdbms
  • 퍼포먼스-마케팅
  • 데이터-엔지니어링
홍태경 댓글 1 좋아요 0 조회수 465

수업과 동일한 SQL 쿼리시 중복으로 값이 나오는 이유

미해결

데이터 분석 SQL Fundamentals

안녕하세요, 강사님 수업을 들은 후에 DBeaver로 쿼리를 따라해보면서 복습을 하고 있습니다. 그런데 이상하게도 강사님과 동일한 쿼리를 입력하여도 저는 중복으로 값이 나오는 현상이 때때로 있습니다. 예를 들어 아래의 between 문법의 경우, 행의 갯수는 총 12개가 되어야 맞는데 저는 중복이 되어서 24개가 되네요. select a.*, b.grade as salgrade, b.losal, b.hisal from hr.emp a join hr.salgrade b on a.sal between b.losal and b.hisal; 처음엔 제가 쿼리를 잘못 입력한줄 알았는데, 동일한 쿼리인데도 이런 경우가 가끔 발생하더라구요. 앞에 제가 연습하면서 수행했던 쿼리의 캐시값이 남아서 이렇게 되는 것일까요? 원인을 알아서 해결하고 싶습니다 ㅠㅠ

  • sql
  • postgresql
  • dbms/rdbms
Hannah Uh 댓글 2 좋아요 0 조회수 722

DBeaver에 PostgreSQL 연결 작업 오류

해결됨

데이터 분석 SQL Fundamentals

안녕하세요, 우선 저는 M1 아이맥을 활용하고 있습니다. 2강 5분 31초쯤 PostgreSQL을 실행하고 DBeaver에 PostgreSQL 연결하는 과정(?)을 설명해주셨는데, 제 맥에서는 보여주신 것과 같은 명확한 PostgreSQL 프로그램이 안 보이더라구요. 여기서 어떤 걸 실행해야 하는지 알 수 있을까요? 그래서 현재로서는 PostgreSQL 프로그램을 실행하지 못했고, 그래서인지 DBeaver에서도 연결하려고 하니 다음과 같은 오류가 뜹니다. 빨리 배우고 싶은 마음인데 설치 작업부터 막혀서 ㅠㅠ 도움 부탁드립니다.

  • sql
  • postgresql
  • dbms/rdbms
khloe 댓글 2 좋아요 0 조회수 1831

DELTE INNER JOIN 심화문제 P2적용시

미해결

[백문이불여일타] 데이터 분석을 위한 고급 SQL

INNER JOIN P2로도 적용해보라고 안내되어서 해봤는데 | id | email | | -- | ---------------- | | 2 | bob@example.com | | 3 | john@example.com | 결과값이 이렇게 되는데 잘이해가 되지 않습니다 ㅜㅜ 앞에서는 P1으로 INNERJOIN하고 P1의 결과값만 확인해서 기준 정렬이 쉬웠는데 INNER JOIN은 P1으로 하고 DELETE는 P2로 하니까 헷갈리네요 ㅜ

  • sql
David Lee 댓글 1 좋아요 0 조회수 368

윈도우 함수는 SELECT에서만 사용가능한가요?

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스

강의 예제를 보니 SELECT *, 를 표시해서 SELECT문에서 이용하더라구요

  • sql
  • dbms/rdbms
박성훈 댓글 1 좋아요 0 조회수 478

Pandas 연계 오류

미해결

다양한 사례로 익히는 SQL 데이터 분석

안녕하세요, Pandas 연계 과정 중 위와 같은 오류가 지속적으로 발생합니다. 아나콘다 관리자모드에서 psycopg2-binary 인스톨 완료했으며, 패스워드와 로컬호스트 넘버도 이상 없습니다. 버전도 모두 상위 버전으로 이상 없습니다. 해결 방법 문의 드립니다. 감사합니다.

  • sql
  • postgresql
  • dbms/rdbms
  • 퍼포먼스-마케팅
  • 데이터-엔지니어링
asdfzxcv 댓글 1 좋아요 0 조회수 854

DELETE INNER JOIN 동작 원리

미해결

[백문이불여일타] 데이터 분석을 위한 고급 SQL

강의 영상 하단에 추가해주신 텍스트에 관하여 질문드립니다. [WHERE p1.Id > p2.Id ] 로 필터링 하여 얻은 결과에 대해 DELETE p2였다면 p2테이블에서의 1 john@~ 레코드만 사라지고 p1(원본)에는 아무런 삭제가 이루어지지 않아야하는데 실습환경에서는 | id | email | | -- | ---------------- | | 2 | bob@example.com | | 3 | john@example.com | 로 나왔습니다. 어떤 이유인지 궁금합니다.

  • sql
잇택잇 댓글 1 좋아요 0 조회수 437

세트2 4번 문제풀이 해설에 관한 질문

미해결

[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이

강의 너무 재밌게 잘듣고 있어서 감사합니다. 두 가지 접근법으로 설명해주셨는데 아래 나열된 4개의 표를 보고 LEFT JOIN으로 처음부터 접근하겠다고 생각을 했다면 맞는 방식인가요? 아니면 선생님처럼 마지막표로 했을 때와 수치가 일치하지 않고 확인하고 접근하는게 맞는 방식일까요? 2. 원래는 항상 AS 알리아스를 사용하셨는데 갑자기 FROM COMPANY C Lead_Manager LM 이런식으로 AS 생략 후 Capital 사용을 해주셨는데 설명없이 진행된거 같은데 AS를 생략하고 스페이스 후 대문자로 쓰면 AS와 동일하게 입력되는게 맞나요? GROUP BY가 와야되는 이유 해당 문제의 쿼리문은 작성하였는데 그룹바이를 빠뜨렸습니다. 어떤 이유에서 그룹바이가 와야하는지 이유가 잘 이해되지 않아서 질문드렸습니다. 아래와 같이 쿼리문을 작성하였는데 실행되지 않아서 문의드립니다. ㅜ SELECT company.company _code , company.founder , COUNT(DISTINCT Lead_Manger.lead_manager_code) , COUNT(DISTINCT Senior_Manager.senior_manager_code) , COUNT(DISTINCT Manager.manager_code) , COUNT(DISTINCT Employee.employee_code) FROM Company LEFT JOIN Lead_Manager ON Company.company _code = Lead_Manager.company_code LEFT JOIN Senior_Manager ON Lead_Manager.company_code = Senior_Manager.company_code LEFT JOIN Manager ON Senior_Manager.company_code = Manager.company _code LEFT JOIN Employee ON Manager.company _code = Employee.company _code Group BY company.company _code, company.founder ORDER BY company.company _code 긴 글 읽어주셔서 감사합니다!

  • sql
David Lee 댓글 2 좋아요 0 조회수 366

웹페이지 만들기 오류

미해결

[리뉴얼] SQL 베이스캠프

안녕하세요, 하기와 같이 명령어 복붙하여도 아래와 같은 Warning sign만 뜹니다. 어떻게 해결이 가능할지요?

  • sql
  • dbms/rdbms
너구리 댓글 2 좋아요 0 조회수 338

INNER JOIN 으로 저 스스로 DELETE DUPLICATE EMAIL 문제를 풀어봤는데요

해결됨

[백문이불여일타] 데이터 분석을 위한 고급 SQL

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
김창훈 댓글 1 좋아요 1 조회수 299

실습용 데이터 복원 에러

미해결

다양한 사례로 익히는 SQL 데이터 분석

데이터 복원 과정에서 에러가 발생하여 문의 드립니다. OS는 윈도우 11 사용하고 있구요, DBeaver는 23.1.5버전, Postgresql은 11.2.1 버전 사용하고 있습니다.

  • sql
  • postgresql
  • dbms/rdbms
  • 퍼포먼스-마케팅
  • 데이터-엔지니어링
hjkwon 댓글 3 좋아요 0 조회수 595

'(부록)MySQL(MariaDB)과 PostgreSQL에서 실행계획과 인덱스 사용 확인' 별첨은 어디에 있나요?

해결됨

SW 개발자를 위한 성능 좋은 SQL 쿼리 작성법

(부록)MySQL(MariaDB)과 PostgreSQL에서 실행계획과 인덱스 사용 확인 편을 보고 있는데요 관련된 sample DB 만드는 법 등 안내된 자료는 어디서 볼 수 있는걸까요? 메모 같은 부분을 못 찾겠습니다. 답변 부탁 드립니다~

  • sql
  • dbms/rdbms
starbee 댓글 1 좋아요 0 조회수 491

수강 순서

미해결

[백문이불여일타] 데이터 분석을 위한 고급 SQL

고급반 들으려 하는데, ‘ 데이터 분석을 위한 SQL 실전편(무료 미니 코스)’는 고급반까지 다 듣고 수강하는 게 좋을까요?

  • sql
1018yearim 댓글 2 좋아요 0 조회수 311

Sql문 순서

미해결

[백문이불여일타] 데이터 분석을 위한 고급 SQL

SQL문을 작성하면 컴퓨터는 위에서부터 순서대로 읽는 게 아닌 것 같은데 진행순서가 어떻게 되나요? 그래서 테이블 이름 바꾸거나 별명 붙이는 데 순서에 따라 영향을 받을 수 있는지 궁금합니다!

  • sql
1018yearim 댓글 1 좋아요 0 조회수 359

인기 태그

인프런 TOP Writers

주간 인기글