250221 TIL

수이·2025년 2월 21일

🟡 TIL

목록 보기
14/60

개인스터디

예제로 익히는 SQL 2회차

SQL 기본구조 : SELECT, FROM

SELECT

테이블의 값(=열,컬럼,필드) 선택
아스테리크(*)기호 사용 시 모든 컬럼값 추출

FROM

레코드를 선택할 테이블의 이름 명시
마지막은 세미콜론(;)으로 끝내야함

DISTINCT

중복 없이 컬럼을 조회

-- 모든 컬럼을 조회할 경우 
SELECT * 
FROM 테이블이름 
;
-- 특정 컬럼을 조회할 경우
SELECT 컬럼이름, 컬럼이름 
FROM 테이블이름
;
-- 특정 컬럼을 중복없이 조회할 경우
SELECT DISTINCT 컬럼이름
FROM 테이블이름 
; 

SQL 조건문 : WHERE

-- WHERE 절을 이용, 특정 조건을 만족하는 데이터 가져오기 
select *
from basic.theglory 
where 성별 ='F'
;
코드를 입력하세요

SQL 조건문 : CASE WHEN

WHEN은 조건에 따라 더 추가 가능
조건식을 모두 만족하지 않을 경우, ELSE로 간주

SELECT CASE WHEN 조건식1 THEN 결과1
            WHEN 조건식2 THEN 결과2
            ELSE 결과3 
            END AS 새로운 컬럼이름
FROM 테이블명
;

작동순서✅

조건문을 지원하는 연산자

동시사용 가능

우선순위를 명시하기 위해 각 조건에 괄호() 작성
각 조건들은 AND로 묶어주기

-- 예시
SELECT *
FROM basic.theglory 
WHERE 날짜 IS NOT NULL
	AND (성별!='M')
	AND (직업 IN('아나운서','승무원','화가'))
	AND (나이 BETWEEN 30 AND 40) -- 30 이상, 40 이하 

기억하기✅

결과값 정렬 : ORDER BY

SQL 구문의 가장 마지막에 수행
필수는 아니며, 기본값은 ASC(오름차순)
내림차순은 DSC

여러 컬럼 사용 가능
ORDER BY 바로 뒤에 나오는 구문이 정렬 우선순위

숙제

문제1 - 조건절 where 구문의 활용

  • 조건
    first_login_date 컬럼이 2023-01-01 초과인 날짜의
    game_account_id, game_actor_id, serverno 를 추출해주세요.
SELECT game_account_id,
	   game_actor_id,
	   serverno 
FROM users u 
WHERE first_login_date > '2023-01-01'
;

문제2 - 조건절 where 구문의 응용

  • 조건
    • level 컬럼이 10 초과이고
    • serverno컬럼이 1이 아니며
    • 아이템 이름 컬럼이 레벨업 패키지 또는 시즌패스이고
    • 아이템 획득 경로가 상점에서 구매한 경우
  • 결과값
    first_login_date, ip_addr, exp, zone_id 를 추출하고 first_login_date을 기준으로 내림차순으로 정렬해주세요.
SELECT first_login_date,
	   ip_addr,
	   exp,
	   zone_id
FROM users u 
WHERE `level` > 10
AND (serverno != 1)
AND (etc_str2 = '시즌패스' OR etc_str2 = '레벨업 패키지')
AND (etc_str1 = '상점에서 구매')
ORDER BY first_login_date DESC
;

이 문제.. 제출할때는 그냥 '패스'로 봤는데 시즌패스였따
이미 제출한 거 쩔수다 😉 조건 꼼꼼히 보기!!

문제3 - 조건절 case when 구문의 활용

  • 조건
    case when 구문을 사용하여 레벨구간을 아래와 같이 구분해주시고, 컬럼이름을 ‘levelgroup’ 으로 설정해주세요.
    • 레벨구간
      ◦ 1~10Lv 이하
      ◦ 11~20Lv 이하
      ◦ 21~30Lv 이하
      ◦ 31~40Lv 이하
      ◦ 41~50Lv 이하
      ◦ 51~60Lv 이하
      ◦ 61~70Lv 이하
      ◦ 71~80Lv 이하
      ◦ 81~90Lv 이하
      ◦ 91~100Lv
  • 결과값
    game_actor_id, level, levelgroup, first_login_date 컬럼을 추출해주시고, first_login_date를 기준으로 내림차순 정렬해주세요.
SELECT game_actor_id,
	   `level`,
	   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 이하'
	   	    ELSE '91~100Lv'
	   	    END 'levelgroup',
	  first_login_date 
FROM users
ORDER BY first_login_date DESC 
;

데일리퀘스트

SQL - 상위 n개 레코드
Python - 각도기


일기

  • ADSP 아답터✅ 모의고사 3회✅ 오답노트✅
    시험이 바로 내일이라 문제 풀이하고 틀린 거 다시 개념 정리하는 데에만 시간을 온전히 썼다
    아답터 선생님 감사합니다
    1-2 과목은 안 틀리는 걸 목표로, 3과목은 과락만 면하자!
    아마 내일 시험 치러 가기 전까지 아답터 돌리고 문제 풀고 할 듯 강의 다 보는 게 목표였는데 물리적으로 시간이 모자라지다 보니 결국 포기함 ㅎ
    시험 다 치더라도 혹시 모르니 강의는 끝까지 다 봐야쥐
  • SQL 코드카타 8✅ 숙제제출✅
    튜터님 라이브세션 너무 좋다
    일단 뭔가 다음주에 피드백 받을 수 있는 과제가 생겨서 기쁨
    코드카타도 아직 EZEZ한데, 오늘 3문제 풀기로 계획해놓고 세션+발표회+지각 3단콤보로 1문제 밖에 못 풀었음
  • Python 코드카타 8✅
    처음에 뭔가 들여쓰기가 잘 안 돼서 정답으로 처리가 안 됐는데 다시 차근차근 써 보니까 괜찮았다
    슬슬 난이도가 올라가고 있는 것 같아서 3문제씩 풀 수 있을지 걱정이 돼

지각을 해버렸다!!!!!!! 어제 안 그래도 피곤하다 생각했는데 결국🥲 폰 충전기를 안 꽂고 자서 연락 오는 것도 하나도 못 듣고 난리난리 생난리

그나마 다행인 건 라이브세션 시작하는 시간에 일어나서 바로 줌부터 키고 출석 갈김 휴 이번 주 목표 지각 안 하기였는데 마지막 날 이렇게 되네 아쉬워라😭

조장님이 오늘 이것저것 나한테 많이 여쭤봐주셨는데(당연함 그땐 둘 밖에 없었음) 쉬운 것도 설명을 잘 못하는 나에게 답답함을 느꼈다 확실히 내가 아는 것과 남에게 가르쳐주는 것은 다른 문제임을 느꼈고 같이 해결하려고 머리싸매는 과정이 즐거웠다 설명하면서 스스로 정리되는 것 같아서 좋았음

아쉬운 건 이번 조가 다음주 금요일까지만 유지된다고 해서 좀 슬펐당 어차피 영원히 헤어지는 건 아니겠지만 우리 조 사람들이랑 이름이 너무 귀엽단말이쥐 관련해서 이것저것 얘기 나눴는데 아주 좋은 시간이었다 다음에 실제로도 꼭 만나요 우리💞

오늘 어쩌다보니 굉장히 쓸 말이 많아졌네 고생했다 나 자신 내일 시험 파이팅🍀

0개의 댓글