변경 전 SELECT c.title, a.cnt_checkins, b.cnt_total, (a.cnt_checkins/b.cnt_total) AS ratio FROM ( SELECT course_id, count(DISTINCT (user_id)) AS cnt_checkins FROM checkins GROUP BY course_id ) a INNER JOIN ( SELECT course_id, count(*) AS cnt_total FROM orders GROUP BY course_id ) b ON a.course_id = b.course_id INNER JOIN courses c ON a.course_id = c.course_id 변환 하기 변경 후 WITH table1 AS( SELECT cours..
SQL
서브쿼리(subquery)는 쿼리문 안에 쿼리가 들어가는 것을 의미한다. 서브쿼리를 작성할때는 서브쿼리문 앞에 Tap 키로 띄어쓰기를 맞춰준다. 1. WHERE - subquery SELECT * FROM 테이블명1 WHERE 필드명1 IN ( SELECT 필드명2 FROM 테이블명2 WHERE 필드명 ='필드명' ) EX) SELECT * FROM users WHERE user_id IN ( SELECT user_id FROM orders WHERE payment_method ='kakaopay' ) 풀이) orders 안에 있는 user_id 필드에 payment_method='kakaopay' 결과물을 users 테이블에 있는 user_id 와 겹치는 *(모든정보) 보여주세요 2.SELECT 서브쿼..
1. GROUP BY SELECT 필드명 FROM 테이블명 GROUP BY 필드명 중복된 것을 취합해 준다. DISTINCT = 단일의 대상 GROUP BY = 여러 대상 (집계,통계 데이터) ex) 같은성씨의 갯수 알아보기 SELECT 필드명,COUNT(*) FROM 테이블명 GROUP BY 필드명 2. ~별로 최소값 구하기 (GROUP BY MIN) ~별로 (그룹별 , 나이별 , 날짜별) < GROUP BY SELECT 필드명1,MIN(필드명2) FROM 테이블명 GROUP BY 필드명1 풀이.= 테이블 에서 필드명1으로 묶은 후 거기서 필드명1안에 필드명2로된 최소값들을 구하라 ex) 1주차 별 라이크 수 구하기 SELECT week,MIN(likes) FROM checkins GROUP BY we..
1. SHOW TABLES < 테이블 목록을 확인한다. 2. 확인한 테이블을 보고 SELECT * FROM 테이블명 내가 필요한 정보가 어디에 담겨 있는지 인지 한다. 3. WHERE 로 필요한 정보를 찾는다. SELECT * FROM checkins WHERE user_id = '12dd94fe' < 여기서 문자열은 작은따옴표 ( ' ' ) 안에 넣어준다. ! 숫자는 따옴표를 안넣는다 *빨간색 글씨는 sql의 명령어로 데이터명과 햇깔리지 않게 대문자로 표기해준다. 4.데이터 필드 2개 찾기 (WHERE AND) ex) 이름 황** 과 결재를 카드로 한 사람 찾기. SELECT * FROM checkins WHERE user_id = '황**' AND payment_method = 'CARD' < 이처럼..