카테고리 없음

[TIL7] SQL 강의 3주차

LHJ_ 2024. 11. 25. 20:29

[복습]

WHERE = 조건

WHERE 뒤에 컬럼을 쓰고 그 컬럼의 조건을 표시

ex) WHERE age > 30

WHERE name LIKE '김%'

 

replace(컬럼명 , '바꿀 문자', '바뀐 문자') 영어, 한글, 숫자 모두 상관없이 ' '작은따옴표가 꼭 들어감
LIKE' ' 마찬가지로 ' '작음따음표가 꼭 들어감
substring (substr) (컬럼명, 문자열 시작 위치 수, 문자열 갯수) (A, 3, 5) A라는 컬럼에서 3번째 글자부터 5개의 글자를 조회
CONCAT (붙이고 싶은 값 모두 적으면 됨)  컬럼 외의 문자를 넣어주고 싶을 때는 숫자, 영어, 한글, 특수문자 상관없이 ' '작은 따옴표를 붙여준다

 

 

[실습] 서울 지역의 음식 타입별 평균 음식 주문금액 구하기 (출력 : ‘서울’, ‘타입’, ‘평균 금액’)

서울 지역 // 음식 타입별!! 평균 음식 주문금액

필요한 컬럼 : 주소, 음식 타입, 평균 음식 주문 금액 

SELECT SUBSTR(addr,1,2) "지역",    //출력할 때 서울이라는 두글자를 출력하기 위해서 substr를 사용

cuisine_type,

AVG(price) "평균 금액"    //평균구하는 명령문

FROM food_orders

WHERE addr LIKE '%서울%'     //서울에 있는 음식점만 보는 것이기 때문에 조건문을 달아줌 

                                                   // 주소를 보면 서울 앞에 아무 글자가 없으므로 '서울%' 가능

                                                   // %는 아무글자나 와도 된다는 표시

GROUP BY 1, 2       // !!!!묶고 싶은 컬럼을 작성!!!!

                                 // 타입별로만 묶고 싶으면 하나만 작성 (컬럼 내에 중복되는 것 끼리 묶임)

                                 // 두가지 컬럼을 작성하면 두가지        ...??? 둘이 왜 묶어주는거지?

                                 // 1과 2는 SELECT에 적힌 순서로 SUBSTR(addr,1,2), cuisine_type 을 써도 됨

 

[실습] 이메일 도메인별 고객 수와 평균 연령 구하기

SELECT COUNT(customer_id),  //count 안에 있는 컬럼은 굳이 지정하지 않아도 됨 (고객 수라 해서 id를 선정함)

AVG(age),

SUBSTR(email,10//특정 문자열을 조회하는 것임!! 위치 지정 후 마지막까지 조회하고 싶을 때는 문자열 갯수는 안 적어도 됨

FROM customers

GROUP BY SUBSTR(email,10) //(3)

 

[실습] ‘[지역(시도)] 음식점이름 (음식종류)’ 컬럼을 만들고, 총 주문건수 구하기

SELECT
CONCAT('[', addr, '] ', restaurant_name, ' (', cuisine_type,')') "음식점",
COUNT(*) "주문건수"
FROM food_orders
WHERE addr LIKE '%도'                //이거 왜 안 됨?!
SELECT
CONCAT('[', SUBSTR(addr,1,2), '] ', restaurant_name, ' (', cuisine_type,')') "음식점",
COUNT(*) "주문건수"
FROM food_orders
GROUP BY 1            //주문 이름 별로 묶어줌 근데 이거 묶는 기준이 뭐임?.. 타입도 중복이 있잖음