TIL(24.04.22.)

codataffee·2024년 4월 21일

TIL

목록 보기
14/135
post-thumbnail

#INTRO

1분기 최대 성과 : )

조급해하지 않고, 하나씩 차분히 채워 나가기.


#코드카타 (10:30 ~ 13:00)


#데이터와 친해지는 SQL (세션 1회차) (14:00 ~ 15:00)

  • SELECT: 테이블의 값(=열, 컬럼, 필드라고도 부름)을 선택해 조회하는 구문
    1. 아스테리크(*) 기호로 모든 칼럼 조회(추출) 가능
    2. DISTINCT: 컬럼 값이 중복되는 경우 고유한 값을 조회하는 함수
    3. 구문의 마지막에 세미콜론(;) 기호를 구분자로 사용
  • WHERE: 조건에 만족하는 경우만 필터링하는 조건문
  • CASE WHEN: 조건에 따라 다른 결과값을 부여하는 조건문

    CASE
    WHEN 조건 1 THEN 결과 1
    WHEN 조건 2 THEN 결과 2
    ELSE 결과3 END

    조건을 작성하는 순서대로 위에서부터 필터링이 된다.

  • 조건문을 지원하는 연산자

  • ORDER BY: 특정 열(칼럼)을 기준으로 결과값을 출력할 때 사용하는 함수

    1. SQL 구문의 가장 마지막에 수행
    2. 필수는 아니며, 기본값은 ACS (오름차순)
    3. 내림차순 수행 시 DESC
    4. 정렬 컬럼을 여러 가지 정할 수 있으며, ORDER BY 바로 뒤에 나오는 구문부터 우선순위
  • 몇 가지 TIPS

    1. (서브)쿼리 작성 시 ( ) 괄호의 위치를 계층 단위로 맞춰 가독성 ↑
    2. 단축키
      • SHIFT + ALT (동시에 여러줄에 동일 한 쿼리 작성)
      • CTRL + 화살표 (빈 칸을 넘어 다음 쿼리로 이동)
    3. 논리 연산자 연산 순서 (AND, OR, ..)
      • AND 칼럼 = ('값1' OR '값2' OR '값3') :
        같은 레벨의 논리연산자인 AND, OR은 순서대로 계산, 오류 발생
      • AND (칼럼 = ('값1' OR '값2' OR '값3')) :
        괄호를 쳐주면 괄호 안의 OR 먼저 연산 후 AND 연산
    4. != , NOT, ! 는 모두 같은 연산자: 같지 않다.

#세션 문제풀이 (15:00 ~ 18:00)


✔️ 문제 #1: date 컬럼 기준 조건부 추출

✔️ 작성 쿼리

select game_account_id ,
       game_actor_id ,
       serverno 
from users
where `date` > '2023-01-01'

✔️ 실행 결과


✔️ 문제 #2: 여러 가지 조건에 부합하는 값 추출

✔️ 작성 쿼리

select `date` ,
        ip_addr ,
        `exp` ,
        zone_id
from users
where level > 10 
      and serverno != 1
      and etc_str2 like '%시즌패스%' or etc_str2 like '%레벨업%'
      and etc_str1 like '상점%'
order by `date` desc 

✔️ 실행 결과


✔️ 문제 #3: 여러 가지 조건에 부합하는 값 추출

✔️ 작성 쿼리

select game_actor_id,
       level,
       levelgroup,
       date 
from 
        (
		select *,
		       case when level between 1 and 10 then '1~10lv'
        		    when level between 11 and 20 then '11~20lv'
  				    when level between 21 and 30 then '21~30lv'
  		         	when level between 31 and 40 then '31~40lv'
            		when level between 41 and 50 then '41~50lv'
            		when level between 51 and 60 then '51~60lv'
            		when level between 61 and 70 then '61~70lv'
            		when level between 71 and 80 then '71~80lv'
            		when level between 81 and 90 then '81~90lv'
            		when level between 91 and 100 then '91~100lv'
            		else null end levelgroup
		from users
		) a
order by date desc 

✔️ 실행 결과


✔️ 문제 #4: 컬럼 형태 변경 후 조건부 추출하기

✔️ 작성 쿼리

select m,
       game_account_id,
       game_actor_id
from 
	(
	select *,
	       date_format(`date`,'%Y-%m') `m` 
	from users
	) a
order by 1, 3 desc 

✔️ 실행 결과

✔️ 참고


#파이썬 기초 학습 (19:00 ~ 21:00)


#OUTRO

오늘의 한 줄.

1주차 12조 '원투원투' 안녕..
2주차 1조 'SELECT 1' 안녕!

profile
커피 좋아하는 데이터 꿈나무

0개의 댓글