갬미의 성장일기

[생애 첫 SQL With 제코베] 주요 함수 본문

Deep Learning& ML/SQL

[생애 첫 SQL With 제코베] 주요 함수

갬미 2021. 12. 24. 02:07

이 글은 제주코딩베이스캠프의 생애 첫 SQL With 제코베 강의를 수강하고 정리한 글 입니다.

 

생애 첫 SQL with 제코베

 

www.youtube.com

실습

LOWER / UPPER 

소문자, 대문자로 변환

SELECT CustomerID, CustomerName,
	LOWER(CustomerName) as 소문자,
    UPPER(CustomerName) as 대문자
FROM Customers;

SUBSTR 

문자열 슬라이싱

SUBSTR(STR, START, LENTH)

만약 숫자를 하나만 쓴다면 -> 그 이후 모든 문자열 출력 

숫자를 셀때 0부터 세는 파이썬과 달리 1부터 센다 헷갈리지 말기

SELECT CustomerID, CustomerName,
	SUBSTR(CustomerName, 1,5) as 'Substring'
FROM Customers;

 

REPLACE

REPLACE('hello world', 'world', 'SQL')

통계 연산

보통은 분산과 표준편차 함수도 제공되지만 W3School에서는 작동 X

SELECT MAX(CustomerID) AS 최댓값,
	SUM(CustomerID) AS 전체합,
	MIN(CustomerID) AS 최솟값 ,
	COUNT(CustomerID) AS 전체행의수,
	AVG(CustomerID) AS 평균 
FROM Customers;

날짜

DATE() -> 현재 날짜 출력 2021-12-23 + 연산시 년도에 더해짐

TIME() -> 현재 시간 출력 16:25:01 + 연산시 시에 더해짐

SELECT DATE();
SELECT DATE() + 10;
SELECT TIME() + 10;

 

실습문제

 

1. 이름의 문자열 길이를 출력해주세요.

SELECT length('Kim Gymin')

2. 이름의 앞 5자리를 *로 처리해주세요.

SELECT CustomerID, CustomerName,
       REPLACE(CustomerName, SUBSTR(CustomerName, 1, 5), '*****') AS 별표채운이름
FROM Customers;

3. Product DB에서 전체 제품의 개수를 구해주세요.

count(*) - 행의개수 출력 

     * == 모든 열의 값을 의미하므로 NULL이 들어있는 행도 포함됨

count(칼럼) - 해당 칼럼의 데이터 개수 출력

     이때 특정 열에서 데이터 개수 이므로 NULL값 제외하고 카운트됨

SELECT COUNT(*) as 개수
from Products;

4. 값(price)의 평균을 구해주세요.(함수를 사용해주세요.)

SELECT AVG(Price) as avg
from Products;

5. 제품 이름이 'A'로 시작하면서 가격이 평균 이상인 제품을 구해주세요.

아래와 같이 작성하면 애러가 발생됩니다. 이유를 설명하고, 코드를 작성하세요.

SELECT * FROM Products 
WHERE ProductName LIKE 'A%' AND Price > AVG(Price);

SELECT *
from Products
where ProductName LIKE 'A%';

여기까지는 작동을 하는데 ,,;

수업때도 알려주지 않고 ,, 구글을 검색해도 왜 misuse of aggregate function AVG() 오류가 뜨는지 알수없다

where 대신 having 을 사용하라는데 having 사용전 group by 에 어떤걸 넣어야할지?! 

 

제코베 아버지~ 정답을 알려줘

 

 

Comments