TIL/사전캠프 퀘스트 10

TIL 2024-09-24(SQL_달리기반 4.)

Lv4. 단골 고객님 찾기요구사항 고객별로 주문 건수와 총 주문 금액을 조회하는 SQL 쿼리를 작성해주세요.출력 결과에는 고객 이름, 주문 건수, 총 주문 금액이 포함되어야 합니다. 단, 주문을 한 적이 없는 고객도 결과에 포함되어야 합니다.기대결과 SELECT c.CustomerName, COUNT(CustomerID) OrderCount, SUM(TotalAmount) Totalspent FROM Orders o LEFT JOIN Customers c ON o.CustomerID = c.CustomerIDGROUP BY 1 두 데이터 테이블을 left join 해주고 공통된 데이터가 있는 컬럼으로 묶어준다.각 이름별로 주문 건수와 총 주문 금액을 알아야 하기에CustomerName을 GROUP BY ..

TIL 2024-09-23(SQL_달리기반 3.)

Lv3. 이용자의 포인트 조회하기상황 : 이번에는 이용자들 별로 획득한 포인트를 학생들에게 이메일로 보내려고 합니다. 이를 위한 자료를 가공해봅시다. 특히 users 테이블에는 있으나 point_users 에는 없는 유저가 있어요. 이 유저들의 경우 point를 0으로 처리합시다.데이터 설명 :users 테이블은 스파르타 코딩클럽에 가입한 유저들의 정보를 날짜별로 기록한 테이블입니다.user_id : 익명화된 유저들의 아이디(varchar255)created_at : 아이디 생성 날짜(timestamp)updated_at : 정보 업데이트 날짜(timestamp)name : 익명화된 유저들의 이름(varchar255)email : 이메일(varchar255)   point_users 테이블은 스파르타코딩..

TIL 2024-09-23(SQL_달리기반 2.)

Lv2. 날짜별 획득포인트 조회하기상황 : 이번에는 이용자들이 잘 활동하고 있는지 보고자 합니다. 포인트가 많을수록 활동을 잘하고 있다고 생각 할 수 있습니다. 날짜별로 획득한 포인트가 점점 늘어나는지 줄어드는지 확인해봅시다.데이터 설명point_users 테이블은 스파르타코딩클럽 가입 유저들의 포인트에 대한 정보를 기록한 테이블입니다.point_user_id : user_point 행을 구별하기 위한 key(varchar255)created_at : 아이디 생성 날짜(timestamp)updated_at : 정보 업데이트 날짜(timestamp)user_id : 익명화된 유저들의 아이디(varchar255)point : 보유하고 있는 포인트(int)문제 : 다음과 같은 결과 테이블을 만들어봅시다.cre..

TIL 2024-09-20(SQL_달리기반 1.)

Lv1. 데이터 속 김서방 찾기상황 : 여러분들은 스파르타코딩클럽의 분석가로 취직했습니다. DBeaver를 테스트 해볼 겸 "김"씨로 시작하는 이용자들 수를 세어 보기로 했습니다.데이터 설명.user 테이블은 스파르타 코딩클럽에 가입한 유저들의 정보를 날짜별로 기록한 테이블 입니다.user_id : 익명화된 유저들의 아이디(varchar255)created_at : 아이디 생성 날짜(timestamp)updated_at : 정보 업데이트 날짜(timestamp)name : 익명화된 유저들의 이름(varchar255)email : 이메일(varchar255)문제 : 다음과 같은 결과테이블을 만들어봅시다.name_cnt : "김"씨 성을 가지고 있는 교육생 수SELECT COUNT(DISTINCT(custo..

TIL 2024-09-20( JAVA_걷기반 반복문 연습하기 Part 1~3)

반복문 연습하기 Part 11부터 100까지 숫자 출력하기for 또는 while 반복문을 사용하여 1부터 100까지의 숫자를 출력하세요.public class Main { public static void main(String[] args) { for(int i=1; i for 반복문.for(초기식 ; 조건식; 증감식) 이렇게 작성한다고 생각하면 된다.조건문이 성립되면 증감을 반복하여 조건이 성립되지 않을 때 까지 반복하는 것이다. 초기식을 int i = 1을 주고 조건문이 성립될 때 마다 i를 출력하고 ++로 증가시켜준다.그리고 조건문에 i가 100이 넘어가면 반복문이 멈추도록 한다. 반복문 연습하기 Part 21부터 100까지의 짝수만 출력하기반복문을 사용하여 1부터 100까지의 숫..

TIL 2024-09-20( SQL_걷기반 마지막 문제 )

마지막 연습 문제 ! 모든 주문의 주문 ID와 주문된 상품의 이름을 나열하는 쿼리를 작성해주세요.SELECT p.name, o.idFROM products p LEFT JOIN orders o ON p.id = o.product_id주문 ID = orders.id, 상품의 이름 = products.name 이라고 생각하면된다.각 테이블마다 데이터 갯수가 동일하기 때문에 inner와 left 중 사용하고 싶은 것을 사용하면 된다.    총 매출(price * quantity의 합)이 가장 높은 상품의 ID와 해당 상품의 총 매출을 가져오는 쿼리를 작성해주세요.SELECT p.id ,(p.price * o.quantity) salesFROM products p LEFT JOIN orders o ON p.id..

TIL 2024-09-19( SQL_걷기반 8~10 )

8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다. doctors 테이블에서 전공(major)이 성형외과인 의사의 이름(name)을 알아내는 쿼리를 작성해주세요.SELECT nameFROM doctors WHERE major LIKE '성형외과' 의사의 이름을 알아내는 쿼리 이기에 SELECT에 name을 쓰고 전공이 성형외과인 의사라는 조건이 있기에 조건문(WHERE)을 사용한다. 여기서 특정 글자를 포함할 때 만 데이터를 가져오는 LIKE를 사용한다.    doctors 테이블에서 각 전공(major) 별 의사 수를 계산하는 쿼리를 작성해주세요.SELECT major, COUNT(1) FROM doctors GROUP BY 1 각 전공 별 이기 때문에 GRUOP BY로 중복되는 전공을 다 묶어주고..

TIL 2024-09-13 ( SQL_걷기반 6~7 )

6) 팀 프로젝트 열심히 했으니 다시 놀아볼까요?!lol_users 테이블에서 각 유저의 레이팅(rating) 순위를 계산하는 쿼리를 작성해주세요. 전체 지역(region) 기준이고 순위는 레이팅이 높을수록 높아야해요 (e.g. rating 1400 유저의 순위 > rating 1350 유저의 순위)SELECT *, RANK() OVER(PARTITION BY region ORDER BY rating DESC) rankingFROM lol_users각 유저의 레이팅을 순위로 계산하는 쿼리.순위면 RANK() OVER() 함수를 써야하는데 기본꼴은 SQL 5주차 수업에 자세히 적혀있다.문제에서 순위를 매길 컬럼과 순위 기준 컬럼을 모두 알려주어 문법에 맞게 작성하면 된다. order by는 항상 오름차순(..

TIL 2024-09-12 ( SQL_걷기반 2~5 )

2) 이제 좀 벌었으니 flex 한 번 해볼까요?!  products 테이블에서 제품 이름(product_name)과 가격(price)만을 선택하는 쿼리를 작성해주세요.SELECT product_name, priceFROM products문제에서 요구한 것은 products 테이블에서 제품 이름과 가격만 선택하는 쿼리를 작성해달라고 했으므로 그게 맞는 컬럼명만 적어주면 된다.  products 테이블에서 제품 이름(product_name)에 '프로'가 포함된 모든 제품을 선택하는 쿼리를 작성해주세요.SELECT *FROM productsWHERE product_name LIKE "%프로%"이번엔 '프로'라는 글자가 들어간 데이터만 조회해야하기 때문에 조건문(WHERE)에서 LIKE를 사용하여 풀어준다."..

1) 돈을 벌기 위해 일 합시다!

1. sparta_employees  테이블에서 모든 직원의 이름(name)과 직급(position)을 선택하는 쿼리를 작성해주세요.SELECT name, positionFROM sparta_employees 2. sparta_employees  테이블에서 중복 없이 모든 직급(position)과 직급을 선택하는 쿼리를 작성해주세요.SELECT DISTINCT positionFROM sparta_employees 3. sparta_employees  테이블에서 연봉(salary)이 40000과 60000 사이인 직원들을 선택하는 쿼리를 작성해주세요.SELECT  *FROM sparta_employeesWHERE salary BETWEEN 40000 AND 60000 4. sparta_employees  ..