<참고> 혼공SQL

핵심적인 SQL 문

SELECT ~ FROM ~ WHERE

 

WHERE 절  뒤에 추가 가능한 절 

결과의 정렬 :  ORDER BY 

SELECT mem_id, mem_name, debut_date 
	FROM member 
	ORDER BY debut_date DESC; -- Desending 내림차순

SELECT mem_id, mem_name, debut_date 
	FROM member 
	ORDER BY debut_date ASC; -- (기본설정)Asecnding 오름차순
    

SELECT mem_id, mem_name, debut_date, height 
	FROM member 
	WHERE height >= 164
	ORDER BY height DESC, debut_date ASC;-- 1순위 키가 큰 순, 2순위 날짜가 빠른순

 

출력의 개수를 제한 : LIMIT

   LIMT 시작, 개수 ->  0 을 첫 데이터라고 설정함.

SELECT mem_id, mem_name, debut_date 
	FROM member 
	ORDER BY debut_date
    LIMIT 3; -- == LIMIT 0, 3
    
# 데뷔 날짜가 빠른 순으로 정렬하고, "4번째" 데이터 부터 2개만 조회
SELECT mem_id, mem_name, debut_date 
	FROM member 
	ORDER BY debut_date
	LIMIT 3, 2;

 

중복된 결과를 제거 : DISTINCT

SELECT DISTINCT addr FROM member;

 

결과를 그룹으로 묶어줌 : GROUP BY

    집계함수 와 함께 - SUM, AVG, MIN, MAX, COUNT

# SUM()
SELECT mem_id, SUM(amount) FROM buy GROUP BY mem_id;

-- 별칭(alias) 사용 : "..."
SELECT mem_id "회원 아이디", SUM(amount) "총 구매 개수"
	FROM buy GROUP BY mem_id; 
    
SELECT mem_id "회원 아이디", SUM(amount*price) "총 구매 금액"
	FROM buy GROUP BY mem_id; 
    
# AVG()
SELECT AVG(amount) "평균 구매 개수" FROM buy; -- 회원이 한번 구매할 때 평균 개수
SELECT mem_id "회원 아이디", AVG(amount) "평균 구매 개수" FROM buy; -- 각 회원 마다 한번 구매할 때  

# COUNT()
SELECT COUNT(*) FROM member; -- 모든 회원 카운트
SELECT COUNT(phone1) FROM member; -- phone1 에 값이 있는 회원 카운트

 

    HAVING 와 함께 - 집계함수를 이용하여 조건을 만들때 사용, 항상 GROUP BY 뒤에 사용

SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 금액"
	FROM buy
	#WHERE SUM(price*amount) > 1000  -- 에러: 집계함수 사용불가
    GROUP BY mem_id
    HAVING SUM(price*amount) > 1000 -- 집계함수를 이용해서 조건을 만들때 사용
    ORDER by (price*amount) DESC; -- 구매액이 큰사람 부터

 

SELECT 문에 사용되는 절의 순서

SELECT 열이름
	FROM     테이블_이름
	WHERE    조건식
	GROUP BY 열이름
	HAVING   집계함수이용한 조건식
	ORDER BY 열이름
	LIMIT	 숫자

+ Recent posts