내일배움캠프/SQL
-
[SQL] Left Join (2)내일배움캠프/SQL 2024. 7. 5. 21:35
어제에 이어서 left join 난이도 지옥 문제 하나를 풀어보도록 하겠습니다! https://school.programmers.co.kr/learn/courses/30/lessons/157339 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이 문제가 다른 문제들과 다른 점은 일단 테이블이 3개나 있다는 것입니다...각 테이블마다 자료도 많아서 파악하는데 오랜 시간이 걸렸습니다.그래도 이런 문제가 데이터 분석 실무에 더 가깝지 않을까요? 각설하고, 문제를 요약해보면 다음과 같은 조건을 요구하는 것을 알 수 있습니다. 1) 자동차 종류가 '세단' 또..
-
[SQL] Left Join (1)내일배움캠프/SQL 2024. 7. 4. 21:24
SQL에서 join은 여러 테이블을 결합해주는 역할을 합니다.여러 테이블에서 일치하는 컬럼들을 찾아 그 칼럼에 공통으로 존재하는 행들만 결합하여 출력합니다. select 컬럼1, 컬럼2... from 테이블1 as a join 테이블2 as bon a.공통컬럼=b.공통컬럼 위와 같은 문법을 갖고 있습니다. 테이블1과 테이블2의 공통 칼럼에 있는 공통 값들의 행을 출력해줍니다. select 컬럼1, 컬럼2... from 테이블1 as 테이블명1left join 테이블2 as 테이블명2on a.공통컬럼=b.공통컬럼 left join의 경우에는 공통칼럼에서 테이블1에만 있는 값의 행들만 출력해줍니다.테이블2에 없는 행의 값은 NULL값이 출력됩니다. 이번에는문제를 풀며 살펴봅시다. http..
-
[SQL] 서브쿼리(Subquery)가 너무 어려워서 작성한 글내일배움캠프/SQL 2024. 7. 1. 21:07
할 게 없으면 미리 코드카타를 풀어보라는 튜터님의 말씀을 듣고 열심히 코드카타를 풀고 있습니다.대부분 무난했지만 서브쿼리가 자꾸 저를 괴롭힙니다...그래서 온라인 세션과 강의를 듣고 간단하게 요약해보았습니다... 서브쿼리란?서브쿼리는 중첩된 쿼리로, 하나의 SQL 문장 안에 다른 SQL 문장이 포함된 형태를 말합니다. 목적보통 다른 쿼리의 조건이나 결과를 기반으로 데이터를 조회하거나 계산할 때 사용합니다.쿼리의 결과값을 가지고 추가 연산도 할 수 있습니다. 장점여러 번 실행해야하는 쿼리문을 1번만 수행하게 합니다.단계별로 복잡한 식을 풀어서 간단하게 표현할 수 있습니다. 방법활용해야할 데이터를 서브쿼리로 만들어주고이 데이터를 본 쿼리에 넘겨줍니다. 간단하게 데이터를 1차적으로 필터링해준다고 생각하면..
-
[SQL] 식품분류별 가장 비싼 식품의 정보 조회하기내일배움캠프/SQL 2024. 6. 27. 21:37
내일배움캠프에서는 매일매일 코드카타 문제를 풉니다.거침없이 풀다가 이번 문제에서 막혀서 눈물이 좀 났습니다...제가 시도했던 방법들이 왜 먹히지 않았는지그리고 앞으로 이런 문제를 만났을 때어떻게 대처해야하는지 분석을 해보려고 합니다. 오답 1. Group by와 Having을 사용 SELECT food_type, rest_id, rest_name, favoriteFROM rest_info GROUP BY food_typeHAVING MAX(favorites) 이 코드를 실행시켜본 결과는... 먼저 rest_info에서 음식 타입별로 그룹을 잘 나누어 주었습니다.그리고 HAVING으로 그룹에 대한 조건 MAX(favorites)을 줬습니다.그런데 이상하게도 일식의 경우만 max(favorites)에 해..
-
[DBeaver 실습] SQL Lv3. 이용자의 포인트 조회하기내일배움캠프/SQL 2024. 6. 12. 15:39
이번에는 users와 point_users 테이블 2개를 사용하는 문제인가 봅니다. 문제의 핵심은 다음과 같습니다. 1. users 테이블에는 있지만 point_users에는 없는 user가 있다고 합니다.2. point_users에 없는 user는 포인트가 없으므로 0으로 처리하라고 합니다.(즉, NULL값을 0으로 처리) 이제 문제를 풀어봅시다. STEP 1 point_users에 없는 user의 정보도 출력되어야 하므로 left join을 사용해줍니다.이 때 point_users와 users에 공통으로 들어있는 user_id를 on로 묶어줍니다. from users u left join point_users pu on u.user_id = pu.user_id 그럼 위와 같이 point_use..
-
[DBeaver 실습] SQL Lv2. 날짜별 획득포인트 조회하기내일배움캠프/SQL 2024. 6. 11. 16:28
먼저 point_users 테이블을 찾아보았습니다. 문제의 데이터 설명과Sparta Database의 point_users 테이블과 일치함을 확인할 수 있습니다. 이제 문제를 풀어봅시다. STEP 1 created_at이 연월일의 날짜 형식으로 나오도록 date 함수를 써줍니다.그리고 avg 함수를 써주어 average_points를 구해줍니다.추가적으로 average_points에 round를 써서 반올림을 시켜줍니다. select date(created_at) created_at, round(avg(point)) average_pointsfrom point_users ⚠️ 주의 ‼️ date_format(created_at, '%Y-%m-%d')을 써주어도 같은 결과가 나오나날짜 형식이 아닌..
-
[DBeaver 실습] SQL Lv.1 데이터 속 김서방 찾기내일배움캠프/SQL 2024. 6. 10. 15:30
먼저 이 user 테이블이 Sparta database에 연결되어 있는지 확인하기 위해 직접 찾아보았다. 칼럼명을 보니 찾고 있던 테이블이 맞는 것 같다. 이제 문제를 풀어보자 STEP 1 교육생의 수를 찾는 것이므로 count 함수를 사용한다. select count(*) as name_cntfrom users count(*) 결과 칼럼을 name_cnt라고 지어주는 것도 STEP 2 김씨 성을 가진 교육생을 찾아준다. where name like '김%' STEP 3 실행시켜주면... 결과가 잘 나왔다! 이 문제의 힌트를 보니 문자열을 일부 추출하는 substr을 쓰는 문제였다..이름의 처음 한 글자가 '김'이면 되므로 where substr(name, 1, 1) = ..
-
문제를 풀며 공부하는 SQL-5내일배움캠프/SQL 2024. 6. 5. 16:55
17. 테이블에서 AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리를 작성해주세요! select namefrom team_projectswhere aws_cost >= 40000; 18. 테이블에서 2022년에 시작된 프로젝트를 선택하는 쿼리를 작성해주세요! 단, start_date 조건을 사용하지 말고 쿼리를 작성해주세요! year: 날짜에서 연도만 가져오는 함수, 숫자형으로 반환 비슷한 함수로 month, week, day도 있습니다. ⬇️ select *from team_projectswhere year(start_date) = 2022; 19.테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. 단, 지금 시점의 날짜를 하드코딩해서 쿼리하지..