SELECT mem_id, mem_name, debut_date
FROM member
ORDER BY debut_date; -- 오름차순(작은 것부터 큰거로 감)
SELECT mem_id, mem_name, debut_date
FROM member
ORDER BY debut_date DESC; -- Descending (내림차순)
-순서: WHERE 다음에 ORDER BY가 와야 한다.
SELECT mem_id, mem_name, debut_date
FROM member
WHERE height >=164
ORDER BY debut_date;
-정렬할때 정렬 조건을 여러개 줄 수도 있다.
SELECT mem_id, mem_name, debut_date,height
FROM member
WHERE height >=164
ORDER BY height DESC, debut_date ASC; --- 키가 같을 경우, 데뷔날짜 기준으로 오름차순
-원하는 개수만 데이터 가져오기
SELECT *
FROM member
LIMIT 3;
-데뷔날짜가 빠른 순서대로 세 팀만 보고 싶어
SELECT *
FROM member
ORDER BY debut_date
LIMIT 3;
-서로 다른 종류들을 중복없이 알고 싶을 때 ( DISTINCT)
1)모든 지역을 가져오는 구문
SELECT addr FROM member;
2)중복된 지역은 제거하고 서로다른 지역만 가져오는 구문
SELECT DISTINCT addr FROM member;
-GROUP BY가 필요한 상황: 각 그룹이 몇개씩 샀는지 알고 싶어
SELECT mem_id, amount FROM buy
ORDER BY mem_id;
결과
SELECT mem_id, SUM(amount) FROM buy
GROUP BY mem_id;
해석: 멤버 아이디 별로 몇개를 샀는지 SUM(합계)를 구하라
-가독성을 높이기 위해 별명 붙이기
SELECT mem_id "회원 아이디", SUM(amount) "총 구매개수" FROM buy
GROUP BY mem_id;
-몇개 샀는지보다 중요한것은 얼마를 구매했는지
SELECT mem_id "회원 아이디", SUM(amount*price) "총 구매금액" FROM buy
GROUP BY mem_id
ORDER BY SUM(amount*price) DESC;
[GROUP BY와 함께 사용되는 함수]
-COUNT함수는 행의 개수를 센다
SELECT COUNT(*) FROM member; -- 모든 회원의 수를 셈
-COUNT안에 열이름을 넣으면 'NULL'값을 빼고 센다
SELECT COUNT(phone1) "연락처가 있는 회원" FROM member;
-HAVING 조건식: GROUP BY에는 WHERE 조건식을 쓸 수 없다. 따라서 HAVING을 사용한다.
-회원중 구매금액이 1000만원을 넘는 회원만 가져오기
SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 개수"
FROM buy
GROUP BY mem_id
HAVING SUM(price*amount) > 1000;
-순서유의: SELECT, FROM, GROUP BY, HAVING, ORDER BY
SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 개수"
FROM buy
GROUP BY mem_id
HAVING SUM(price*amount) > 1000
ORDER BY SUM(price*amount) DESC;