푸잉이의 기술블로그

2주차) 엑셀보다 쉬운 SQL #Group by - having #Order by # Null #날짜 조건#MOD 본문

IT/SQL

2주차) 엑셀보다 쉬운 SQL #Group by - having #Order by # Null #날짜 조건#MOD

data고수 2022. 7. 7. 04:45

원래는 월요일마다 들을려고 했는데 급하게 자소서 제출 해야하는게 있어서 목요일 새벽 4시에 강의를 들었다...

오늘 9시에 출근해야하는데 어떡하남ㅎ.ㅎ

 

#Group by, Order by

순서

1)  select * from table이름 

을 해서 어떤 필드명을 가지는지를 확인

 

2) 원하는 필드명을 확인했으면  ex) orders table에 email을 보고자 한다면

select * from orders

where email like '%gmail.com'을 쳐서 gmail.com인 추출

 

3) payment 별로 개수를 세야한다면 

 select payment_method, count(*) from orders

where email like '%gmail.com'

group by payment_method를 선택한다. 

-> group by 별로 payment_method를 묶고 개수를 세는 것

 

4) order by는 다 추출하고 난 뒤에 정렬하는 것이므로 제일 마지막에 작성한다.

default 값 asc

 select payment_method, count(*) from orders

where email like '%gmail.com'

group by payment_method를 선택한다. 

order by count(*) 

->개수별로 정렬한다.

 

5) count 말고 max, min, avg 등이 있다. 

그 위에 round(max(likes), 2) 로 round를 뒤집어 놓으면 소수점 2자리로 표시되어진다.

 

**max ^ (likes)로 max 띄우고 like로 표시 하면 error 뜨기 때문에 꼭 붙여서 사용하기

 

그리고, alias 별칭으로 필드 값, 테이블 명 모두 별칭으로 불릴 수 있다. 

기본적으로 select * from user u <-u라고 뜬다. 

 

필드명을 별칭으로 쓸 땐, select payment_method as pm from orders

as 넣어서 표시한다. 

 

#Group by having

동일한 회원이 동일한 상품을 재구매한 데이터를 구하기

중복 관련 -> group by having 

GROUP BY USER_ID, PRODUCT_ID HAVING COUNT(*)>=2 

 

#필드값이 Null인 데이터 조회하기

select * from a

where fiber is null

 

#필드 값이 Null 이 아닌 데이터 조회하기

그럼 필드 값이 Null 이 아닌 경우에는 어떻게 할까요.

SELECT * FROM TargetTable
WHERE TargetField IS NOT NULL

IS NOT NULL 을 사용하면 됩니다. 너무 쉽죠?

 

#필드 값이 Null  대신하는 방법

1. SELECT 에서 CASE-END문 만들기 

SELECT CASE WHEN NAME IS NULL THEN "NO NAME" ELSE NAME END AS NAME 

2. SELECT 에서 IFNULL로 만들기 
IFNULL(TLNO 필드명, "NONE"원하는 대체 값) 코드 값
IFNULL를 사용하여 아무 것도 안뜨는 NULL 값을 "NONE" 문자열 값으로 대체 됨

#날짜 조건

조건문에 BETWEEN을 사용해 날짜 범위를 지정해 검색할 수 있습니다.

지정한 범위에 포함되는 데이터는 모두 출력됩니다.

꼭 날짜에 작은 따옴표 잊지 말기!!! 

SELECT *
FROM test
WHERE date BETWEEN '2022-07-01 00:00:00' AND '2022-07-31 23:59:59';

 

결과

 

+------+---------------------+
| id   | date                |
+------+---------------------+
|    1 | 2022-07-26 14:00:00 |
|    2 | 2022-07-27 13:00:00 |
|    3 | 2022-07-28 14:00:00 |
|    4 | 2022-07-29 15:00:00 |

 

 

#MOD

Select * from table 

where mod(ID, 2) = 0

-> 짝수행 검색 

 

Select * from table

where mod(ID, 2) = 1

-> 홀수행 검색 

 

 

 

Comments