04월 07일 내용정리
3.중복된 자료를 하나만 검색하는것 (중복된 결과를 제거): distinct
4.select 열이름 as 별명,... from 테이블명 where 조건 group by 그룹지을열이름 having 그룹의 조건 order by 정렬;
group by 는 단독으로 쓰이지 않음.
여기서'group by 열이름' 그룹을 만들 열 을쓴다.
'order by 열이름' 정렬이 필요한 열 을쓴다.
5.집계함수(=그룹함수) where절에서는 집계함수를 사용할수 없음. 사용할려면 하위쿼리를 활용.
sum(열이름): 합계, 열이름에 대한것만
sum(수식): 합계, 수식에 대한것만
avg():평균
max():최대값
min():최소값
count():개수
count(distinct):중복은 하나만
count(*):모든 행의 개수(null인 행도 셈)
count(열이름):null 제외한 행의 개수
6.concat(값1,값2...) =>값1값2...연결하여 출력
7.소수점 구하는 방법 & 천단위구분기호(,)를 써서 표현: format(식 or 숫자, 소수자릿수)
예)select mem_id, format(sum(price amount), 0) "총 주문 금액" from buyTBL group by mem_id having sum(price amount) >=1000;
8.집계함수는 where절에 사용할수 없다. where절 대신해서 having을 사용하기
9.null 자료만 표기 : is null
not null자료만 표기: is not nul
null대신 "값없음" 으로 표기하고 싶을때->if(조건, 조건의 결과가 참일때 실행할값, 거짓일때 실행할 값)->if(phone1 is null,"값없음", phone1)
10.if(조건, 조건의 결과가 참일때 실행할값, 거짓일때 실행할 값)
use market_db;
select * from buyTBL;
select * from memTBL;
select mem_name as "그룹이름", addr as "주소" from memTBL where addr="경기" or addr="서울";
select mem_name as "그룹이름", addr as "주소" from memTBL where addr="경기" or addr="서울" order by mem_name; -- addr 기준으로 오름차순하고 addr이 같은 자료들은 mem_number 기준으로 내림차순 정렬
select mem_name as "그룹이름", addr as "주소" from memTBL where addr="경기" or addr="서울" order by mem_name desc;
select * from memTBL order by addr asc, mem_number desc;
-- 전체 테이블에서 해당속성만 검색하기
select addr from memTBL;
select distinct addr from memTBL;
select mem_id as "회원ID", price as "가격", amount as "총합" from buyTBL group by mem_id ;
select mem_id as "회원아이디", sum(amount) as "합계", avg(amount) as "평균" from buyTBL group by mem_id;
select mem_id, count(*) "구매건수" from buyTBL group by mem_id;
select mem_id, concat(count(*),"건") "구매건수" from buyTBL group by mem_id;
select mem_id, sum(amount) 합계, avg (amount) 평균, max(amount) 평균, min(amount) 최소값, count(*) 구매건수
from buyTBL group by mem_id;
select mem_id, sum(amount) 합계, format(avg (amount),1) 평균, max(amount) 평균, min(amount) 최소값, count(*) 구매건수
from buyTBL group by mem_id;
select mem_id, format(sum(price*amount),0) "총주문금액" from buyTBL group by mem_id;
-- 집계함수는 where절에 사용할수 없다. 그러므로 아래건은 에러
select mem_id from buyTBL where 1000<=sum(price*amount) group by mem_id;
-- where절 대신해서 having을 사용하기
select mem_id from buyTBL group by mem_id having 1000<=sum(price*amount);
-- format형식으로 사용하기
select mem_id, format(sum(price * amount), 0) "총 주문 금액" from buyTBL group by mem_id having sum(price * amount) >=1000;
select mem_name, addr from memTBL where phone1 is null;
select mem_name, addr from memTBL where phone1 is not null;
select mem_name, if(phone1 is null,"값없음", phone1) as phone2 from memTBL;