목록외부 수업/SQL 스터디 (10)
working_helen

Leetcode 코딩테스트 연습 MySQL Med.3497. Analyze Subscription Conversion: A subscription service wants to analyze user behavior patterns. The company offers a 7-day free trial, after which users can subscribe to a paid plan or cancel. Find users who converted from free trial to paid subscription. Calculate each user's average daily activity duration during their free trial period. Calculate each user's..

SQL 구문 연습과 함께 데이터베이스와 관련된 개념적인 부분에 대해 공부해본다. 1. Database 2. Phase of DB design 3. Entity-Relationship Model (ER model)4. Relational Model5. SQL 1. Database1) 등장 배경 - Big Data와 Web Scale Computing의 등장으로 대용량 데이터를 효율적으로 관리해야할 필요성이 강화 - 초기 데이터 저장 방식은 File System, 많은 문제점이 존재redundancy : 같은 데이터가 여러 파일에 중복 저장 integrity : integrity가 보장되지 않아 무결성 문제에 취약consistency : atomic update가 불가능concurrent access..

Leetcode 코딩테스트 연습 MySQL Easy1633. Percentage of Users Attended a Contest: find the percentage of the users registered in each contest rounded to two decimals 풀이 1- select 문 내에서 서브쿼리 사용select contest_id, round(count(contest_id)/(select count(*) from Users)*100, 2) as percentagefrom Register group by contest_idorder by 2 desc, 1 풀이 2 > count가 0인 조합까지 포함해서 모든 가능한 조합별 개수 세기- cross join으로 모든 가능한 조합이 ..

Leetcode 코딩테스트 연습 MySQL Easy1965. Employees With Missing Information : report the IDs of all the employees with missing information. The information of an employee is missing if: The employee's name is missing, or The employee's salary is missing. > FULL OUTER JOIN 결과 = (LEFT OUTER JOIN) UNION (RIGHT OUTER JOIN) 결과 풀이 1 : FULL OUTER JOINselect employee_idfrom Employees full outer join Salaries..

Leetcode 코딩테스트 연습 MySQL Easy1795. Rearrange Products Table : rearrange the Products table so that each row has (product_id, store, price). If a product is not available in a store, do not include a row with that product_id and store combination in the result table. 풀이 : UNPIVOT- WIDE를 LONG으로 바꾸기VALUE : 합칠 기존 col의 셀 안에 값들을 모을 새로운 col 이름STACKcol : 합칠 기존 col의 이름들을 모을 새로운 col 이름 IN (값) : STACK할 기존 c..

프로그래머스 MySQL Lv4FOOD_PRODUCT 테이블 : PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품코드, 식품분류, 식품 가격을 의미 식품분류별 가장 비싼 식품의 정보 조회하기 : 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요. 풀이 1- WHERE절 서브쿼리 사용- 같은 테이블 간 비교이므로 테이블 별칭 사용해주기 SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAMEFROM FOOD_PRODUCT ..

프로그래머스 MySQL Lv3ANIMAL_INS 테이블 ANIMAL_OUTS 테이블 : ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냄. ANIMAL_OUTS 테이블의 ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키 풀이 1 - NOT IN 연산자 사용 SELECT NAME, DATETIMEFROM ANIMAL_INSWHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_OUTS)ORDER BY 2LIMIT 3 풀이 2 - OUTER JOIN 사용 SELECT A.NAME, A.DATETIMEFROM ANIMAL..

프로그래머스 MySQL Lv2 PRODUCT 테이블 가격대 별 상품 개수 구하기 : 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문을 작성해주세요. 가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요. 결과는 가격대를 기준으로 오름차순 정렬해주세요. 풀이- Oracle TRUNC(숫자, 위치 n) / MySQL TRUNCATE(숫자, 위치 n) : 버림 연산, n이 양수면 소수점 n번째 자리까지 유지, n이 음수면 정수 n번째에서 버림- Oracle과 MySQL 모두 실행 순서는 GROUP BY → SELECT지만 GROUP BY 1에서의 1은 SELECT절의 컬럼 위치를 참조하는 문법적 표현으로 사용 가능 (GROUP ..
프로그래머스 MySQL Lv1 ANIMAL_INS 테이블 아픈 동물 찾기 : 동물 보호소에 들어온 동물 중 아픈 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요. 풀이- ORDER BY에서 숫자를 사용해 정렬에 사용할 칼럼이 무엇인지 지정 가능 SELECT ANIMAL_ID, NAMEFROM ANIMAL_INSWHERE INTAKE_CONDITION = 'Sick'ORDER BY ANIMAL_IDSELECT ANIMAL_ID, NAMEFROM ANIMAL_INSWHERE INTAKE_CONDITION = 'Sick'ORDER BY 1 역순 정렬하기: 동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는..

프로그래머스 MySQL Lv1 FOOD_FACTORY 테이블: FACTORY_ID, FACTORY_NAME, ADDRESS, TLNO는 각각 공장 ID, 공장 이름, 주소, 전화번호를 의미합니다. 강원도에 위치한 생산공장 목록 출력하기문제 : FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요. 풀이 1 SELECT FACTORY_ID, FACTORY_NAME, ADDRESSFROM FOOD_FACTORYWHERE ADDRESS LIKE '강원도%'ORDER BY FACTORY_ID - LIKE : 부분적으로 일치하는 문자열을 찾을 때_ : 모든 글자, 한 글자 % : 모..