[NestJS] Swagger 바디 타입 여러개 명시하기
Node.js2022. 10. 17. 16:00[NestJS] Swagger 바디 타입 여러개 명시하기

헬스 기구 처리 로직 소개 바디로 여러개의 타입 중 하나를 선택해서 입력하는 로직을 구현하고 있었다. 우선, 운동 레퍼지토리는 이렇게 생겼다. 무산소, 유산소 타입의 합집합이다. 이걸 저장하는 방식은 2가지가 있다. 1개의 저장 컨트롤러에 2가지 타입의 DTO를 받는 것. 2개의 저장 컨트롤러를 만들어서 DTO와 1:1로 연결하여 저장하는 것 저는 관리 측면이 편하기 때문에 1번 방식을 이용하기로 했습니다. 여기서 발생한 문제는 스웨거에 어떻게 넣을 것인가.. enum으로 넣으면 터집니다. 하나만 넣으면 문서화 작업의 의미가 사라집니다. 2개의 클래스를 타입으로 사용하면 에러가 납니다. 그래서 어떻게 구현했는데? 구현 방법이 있었습니다. @POST('저장 경로') @ApiOperation({ summar..

Node.js2022. 10. 7. 16:00[NestJS] e2e테스트 Jest 테스트 시 DB 초기화하는 법

e2e 테스트는 매번 데이터베이스를 초기화해줄 필요가 있습니다. 다만.. 저는 Jest를 쓰는데 따로 초기화 해주는 함수가 없었습니다. (있으면 알려주세요!) 그런 이유로 방법 계속 찾아봤는데 따로 메소드를 제공해주지 않아서 팁 정도를 찾아서 이를 공유하고자 합니다. import { Test, TestingModule } from '@nestjs/testing'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Connection } from 'typeorm'; import ormConfig from './orm-config'; import { AppController } from '@app/app.controller'; import { UserMo..

NestJS + Flutter 카카오 OAuth 로그인 구현하기
Node.js2022. 9. 24. 18:06NestJS + Flutter 카카오 OAuth 로그인 구현하기

서론 이 글은 2024.02.03일에 업데이트 되었습니다. 클라이언트에서 토큰을 발급받고 발급받은 토큰을 서버로 보내는 방식으로 구현하였었는데 더 효율적이고 안전한 방식으로 개선하였습니다. 본 글보다 우선적으로 읽어야하는 글 https://developers.kakao.com/docs/latest/ko/kakaologin/flutter | 카카오 플러터 문서 https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api | 카카오 로그인 REST API 문서 개요 간단한 흐름 Kakao Developer에 애플리케이션 등록 및 환경설정(Flutter에서 사용할 API 키, Nest.js 서버 주소 등록) Flutter SDK를 이용하여 카카오톡에 OAu..

iterm2 자동 완성 플러그인 적용하기(zsh-autosuggestions)
How to.2022. 9. 20. 21:15iterm2 자동 완성 플러그인 적용하기(zsh-autosuggestions)

설정 방법:https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md item2에 아래 코드를 실행해 플러그인을 설치합니다. git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions vi ~/.zshrc plugins를 입력하여 .zshrc 파일을 수정할 수 있는 vi 환경으로 이동합니다. plugins에 zsh-autosuggestions를 아래와 같이 추가합니다. 이후 읽기모드에서 :wq를 입력하여 나오시면됩니다. iterm2를 껐다 켜보면 잘 실행됩니다!

생각 정리2022. 9. 7. 16:00개발 블로그를 잘 이용하는 방법

내가 개발 블로그를 운영하면서 깨달을 부분을 정리해보았다. 목차 카테고리명을 구체적으로 작성하라. 비슷한 요소끼리는 묶어라 카테고리의 깊이를 최소화하라. 카테고리명을 구체적으로 작성하라. 카테고리는 해당 개발자가 어떤 것을 공부했는지를 한눈에 볼 수 있는 항목이다. 애매모호한 명명 규칙을 따른다면, 이 사람이 어떤 기술 스택을 가지고 있고, 어떤것을 공부하는지를 알 수 없다. 또한 블로그에서 코딩 꿀팁 같은 내용으로 검색을 하지 않는다. 때문에 기술명 같은 구체적인 네이밍을 권장한다. 명명 규칙 BAD NAMING GOOD NAMING - 코딩 꿀팁 - 오류 고치기 - AWS, Sping 등 (기술 이름) - 자기개발 - 독서 - etc(기타) 등등 좋은 예시를 몇개 들고왔다. 개발 블로그 카테고리 네이..

Git Flow란, 깃 브랜치 전략
CS2022. 9. 6. 17:55Git Flow란, 깃 브랜치 전략

Flow란? 직역하여 흐름이라는 의미입니다. git+Flow는 'git에서 제공하는 브랜칭 기능을 활용한 변경 이력 관리 전략'이라고 이해하시면 됩니다. Git Flow란? 브랜치를 나누는 방법에 대한 분류 중 하나입니다. Git Flow의 특징은 브랜치를 5종류로 나뉩니다. main(master): 서비스을 직접 배포하는 역할을 하는 브랜치입니다. feature(기능): 각 기능 별 개발 브랜치입니다. develop(개발): feature에서 개발된 내용이 저장되는 브랜치입니다. release(배포): 배포를 하기 전 내용을 QA(품질 검사)하기 위한 브랜치입니다. hotfix(빨리 고치기): main 브랜치로 배포를 하고 나서 버그가 생겼을 때 빨리 고치기 위한 브랜치입니다. main, develop..

Notion2022. 9. 5. 17:46[Notion] 노션 개발자 단축키 마크다운

노션 단축키 중 알아두면 생산성이 떡상하는 단축키만 모았습니다. 필요없다고 판단되는 단축키는 제외했습니다. https://www.notion.so/ko-kr/help/keyboard-shortcuts 단축키 cmd/ctrl + N : 새 페이지 생성 cmd/ctrl + P : 최근 연 페이지들 띄우기 cmd/ctrl + E : 코드 표시로 변경 cmd/ctrl + [ / ] : 이전, 다음 페이지로 이동 cmd/ctrl + shift + L : 다크모드 전환 :[이모티콘 이름] : 이모티콘 불러오기 ex) :apple, :사과 cmd/ctrl + I : 이텔릭체(기울임꼴)로 변경 cmd/ctrl + B : 볼드체(굵게)로 변경 cmd/ctrl + U : 언더스코어(밑줄)로 변경 Tab / shift + ..

How to.2022. 8. 26. 14:47Mac 맥, permission denied 에러

김영한님 JPA 실전 강의를 보다가 터미널로 h2 DB를 실행시키려는데 permission denied에러가 나왔다. 이에 대한 해결 방법을 공유하려고 한다. chmod 755 [파일이 있는 경로] 예시)chmod 755 ./h2.sh change mode의 준말이다. 유닉스 계통의 명령어이다. 755의 의미는 각 자리수마다, rwx의 의미를 가지고 있다. read, write, excute라는 뜻이다. 755에 대한 의미는 아래에서 보겠습니다. 이렇게 하면 실행된다. 파일 권한 755에 대한 이해 파일 소유자 권한 그룹 사용자 권한 기타 사용자 권한 r w x r w x r w x 2^2 2^1 2^0 2^2 2^1 2^0 2^2 2^1 2^0 755면, 4 + 2 + 1 = 7 4 + - + 1 = ..

[NestJS] EntityMetadataNotFound Error: No metadata for * was found.
Node.js2022. 8. 12. 13:12[NestJS] EntityMetadataNotFound Error: No metadata for * was found.

엔티티를 찾지 못할 때, 발생하는 버그입니다. 저는 테스트코드 작성 중 경로를 잘못 지정했습니다. 엔티티 파일을 찾지 못했을 때 발생합니다. 위가 저한테 발생한 오류이고, 경로는 다음과 같이 설정해주었습니다. 파일 경로는 아래와 같았구요. ┖src ┠app ┖domain ┖equipment ┖entities ┖equipment.entity.ts 해결 방법 위와 같이 사용할 엔티티를 import 해주니 해결되었습니다. +추가 Entity 파일에 @Entity 데코레이터를 적용하지 않았을 때도 발생하니 반드시 확인해주시길 바랍니다. +) 추가 릴레이션 되어 있는 테이블도 import 해주셔야합니다..

[NestJS] Can't find module 'entity' from 'service.ts' 에러
Node.js2022. 8. 12. 00:15[NestJS] Can't find module 'entity' from 'service.ts' 에러

NestJS에서 엔티티 위치를 찾을 수 없다는 말입니다. 주로 entity를 찾을 수 없다고 나오지만 이는 "경로 지정이 잘못되었을 때" 나오는 에러입니다. 에러 발생 포인트: 레퍼지토리를 연결하여 CRUD 메소드를 만든 후(Entity 연동 후), Test를 돌려보니 에러가 남. 에러 원인: tsconfig.json과 pakage.json의 모듈 네임 매퍼가 같지 않음. tsconfig.json "jest": { "moduleDirectories": [ "node_modules", "src" ], "moduleFileExtensions": [ "js", "json", "ts" ], "roots": ["","src"], "testRegex": ".*\\.spec\\.ts$", "transform": { ..

[Mac] 맥 Postgresql 로컬 환경 구축하기
How to.2022. 7. 17. 21:11[Mac] 맥 Postgresql 로컬 환경 구축하기

설치brew로 postgresql을 설치해줍니다. brew install postgresql 버전 삭제 등의 이유로 문제가 될 수 있으니 에러가 난다면 install을 실행해주시면 됩니다! 서비스 시작 brew services start postgresql 이런식으로 오류가 뜬다면, brew services restart postgresql를 입력하여 재시작해주세요. psql 접속 psql postgres 를 입력하면 postgresql에 접속이 됩니다. 롤 생성 CREATE ROLE {롤 이름} WITH LOGIN PASSWORD '{비밀번호}'; 롤이 제대로 생성되었는지 확인하기 \du 각 컬럼은 롤 이름, 권한, 소속 멤버입니다. 유저한테 권한 부여 ALTER USER {롤 네임} WITH supe..

개발 블로그 시작하기
How to.2022. 6. 19. 17:06개발 블로그 시작하기

Why is Blog? 유능한 개발자가 되기 위해서는 개발 블로그를 운영해야한다. 블로그 글을 작성함으로써 얻을 수 있는 이점은 다음과 같다. 성장을 가시화 할 수 있다. 비판적 사고를 가질 수 있다. 하나의 스펙이 된다. 생각 정리를 할 수 있다. 공부 내용을 확실히 이해할 수 있다. 빠르게 성장할 수 있다. 댓글로 피드백을 받을 수 있다. etc.. 반드시 블로그를 운영해야하는가? 그것은 아니다. 하지만 블로그를 운영하며 공부한다면 빠른속도로 성장할 수 있다. 포스트 해야한다는 강박증을 가지지 말고, 자신이 공부한 내용을 확실히 공부하고 재학습한다고 생각하면 좋다. 내가 지금까지 본 개발자 블로그는 크게 다음과 같은 목표를 가지고 있었다. 개인 공부 브랜딩 목적 || 취업 How to Start? 개..

How to.2022. 6. 17. 17:53컴공과 개발자 군대 보직 추천

20살 미필 학생 개발자가 군대를 어떻게 갈지 눈물 흘리며 정리하였습니다. 다른 꿀보직 있으면 댓글로 알려주세요. ㅠㅠ 내가 찾아본 결과 그나마 컴공이 갔을 때 배워 올 수 있는게 있다 싶은 직무들은 아래와 같았습니다. SW 개발병(육, 해, 공) = 개발병 저는 이거 지원할 예정, 다시 글로 정리할게요. 자격 : 컴퓨터 관련 학과 2년 수료 이상자, 관련 자격증 취득자 하는 일 : 사무실 근무하면서 프로그램 개발/유지보수 주로 컴퓨터학과 3~4년 수료 후 지원합니다. SW마에스트로 선발/연수자는 추가점수가 있습니다. 정보 보호병(육, 해, 공) = CERT병 따로 공부할 시간이 있고, "보안쪽으로 공부한다" or "컴퓨터 만질 수 있는 직무를 빨리 가고 싶다." 추천 자격 : 보안 관련 학과 전공자, ..

학생 개발자 스펙 쌓는 방법
How to.2022. 5. 24. 18:19학생 개발자 스펙 쌓는 방법

개발 시장은 ONLY 스펙으로만 경쟁합니다. 현직자라면 현재 다니고 있는 회사를 다니거나 개인 공부로 스펙을 쌓을 수 있지만 학생 개발자는 이런 로드맵이 적어서 한번 정리해봤습니다. 0. 본인의 목표 정하기. 창업에 관심있는지, 취업에 관심있는지? 목표 직무가 어디인지? (프론트엔드, 백엔드, Iot, 보안 etc) 본인의 최종 목표를 이룰때 도움이 되는 것을 위주로 준비하시면 좋습니다. 만약 아직 목표가 정해지지 않았다면, 여러 경험을 쌓아보는 것을 목표로 하셔도 좋습니다. 1. 토이프로젝트 본인의 목표에 맞게 준비하세요. 프론트라면 UI/UX를 높이는 것이 중요하고, 백엔드라면 서비스를 직접 만들어보세요. 프론트는 퍼포먼스, 백엔드라면 비즈니스 적 로직을 작성하는 데에 집중하는 것이 좋겠지요. 토이프..

SW마에스트로 13기 합격 후기 | 포폴 공유 및 소마 14기 지원에 대한 조언
회고록2022. 4. 9. 18:05SW마에스트로 13기 합격 후기 | 포폴 공유 및 소마 14기 지원에 대한 조언

SW마에스트로 13기 합격했습니다! 이번 글에서는 합격 후기 및 제가 합격을 위해 준비했던 내용을 공유하려고 합니다. 도움되셨으면 좋겠습니다. 취업률..(23.09.27 추가) Q. 취업은 잘 되나요? 최근 이런 키워드가 블로그에 찍혀서 뉴스 하나를 첨부합니다. https://www.news1.kr/articles/?3796955 | SW마에스트로 수료생 취업률 92.6%…87.4%가 정규직 SW마에스트로의 취지와는 맞지 않지만(창업 목적), 수료생 중 80% 정도는 곧바로 창업하지 않고 취업을 우선으로 하는 것 같습니다. Q. 나이가 많아서 될지 고민이에요. SW마에스트로는 최소 나이 외에는 제한이 없어요. 13기에는 고등학생부터 서른 초반 분들도 계시고, 대학 졸업하신분들도 많아요. 나이는 상관없는 ..

[백준 16920] 확장 게임 해설 및 풀이 (파이썬)
Python2022. 3. 20. 14:32[백준 16920] 확장 게임 해설 및 풀이 (파이썬)

구현이 좀 빡센 BFS 문제였다. 테스트케이스에 n, m, p가 주어진다. n,m은 게임판의 사이즈, p는 플레이 하는 인원의 수다. 그후에 S1, S2, ...Sp가 주어진다. 각 플레이어의 한턴에 움직일 수 있는 거리다. 그후에 게임판이 주어진다. 예시) 테스트케이스 7번 1..1 #.## .... ...2 '숫자'는 플레이어의 인덱스이고, . 은 갈 수 있는 길, #은 벽을 의미한다. 구현이 그리 어렵진 않았지만, 헛도는 것을 예외 처리 하는게 중요하다. 코드 1 import sys from collections import deque input = sys.stdin.readline n,m,p = map(int,input().split()) castle = [[] for _ in range(p+1)..

[SW마에스트로] 소마 코딩 테스트 2차 합격 후기 / 공부법
회고록2022. 3. 20. 00:32[SW마에스트로] 소마 코딩 테스트 2차 합격 후기 / 공부법

2차 합격! 면접만 남았습니다. 문제는 총 5문제, 알고리즘 3, SQL 1, WEB 1으로 나왔다. 오픈북과 자동완성이 허용되지 않았고, 난이도는 실버2~골드3정도로 나온거 같다. 문제 요약 알고리즘 idx 알고리즘 분류, 난이도 문제 요약 1 구현, 완탐 S1 문제가 복잡했다. 이건 설명을 패스하겠다. set자료구조와 교집합 기능을 이용하여 풀었다. 2 구현, 그래프 이론(Union-Find, BFS, DFS) G4 순열 사이클과 비슷한 문제였다. 여기서 조건 몇개만 추가하면 된다. 3 DP 빡구현 최소G1 테트로미노 상위 느낌의 DP인데, 시간 많이 줘도 못풀 것 같다. 채팅방에서 어떤분이 5차원 6중첩 for문으로 푸셨다. 매년 있는 킬러 문제같다. 2솔했다. SQL SQL은 1차의 실수 때문에 ..

[파이썬] 분할 정복을 공부합시다.
Python2022. 3. 15. 21:05[파이썬] 분할 정복을 공부합시다.

분할 정복 (Divide & Conquer) 분할 정복은 문제를 여러개로 나누어서 푸는 알고리즘입니다. 문제를 여러개로 분할하여 정복하기 동적 계획법(DP)과의 차이점은 동적 계획법은 분할한 문제들이 서로 영향을 미침. 분할 정복은 분할한 문제들이 서로 영향을 미치지 않음. 이 있습니다. 분할 정복의 필요조건 문제를 나눌 수 있어야 합니다. 부분 문제의 답을 이용하여 원래 문제의 답을 계산하는 방법이 있어야 합니다. 분할 정복의 알고리즘의 접근법은 다음과 같습니다. 분할 : 문제를 작은 문제로 분할하는 과정 정복 : 분할한 작은 문제들을 해결. 조합 : 작은 문제에 대한 결과를 원본 문제에 대한 결과로 조합합니다 분할 정복 문제 하나를 가져와서 함께 풀어보겠습니다. 풀어볼 문제는 1074번 Z입니다. 문..

성장력을 극한까지 높히는 방법 : 롤 다이아 3개월만에 찍는 법
How to.2022. 3. 6. 00:17성장력을 극한까지 높히는 방법 : 롤 다이아 3개월만에 찍는 법

나는 원래는 게임 이야기를 안하려고 했다. 게임을 오래 했다는게 별로 좋아 보아지도 않기 때문이다. 하지만 나의 롤모델이신 향로님도 게임에 관한 글을 쓰신 글을 읽고 게임을 주제로 이야기해보려고 한다. 롤에 중독수준으로 빠졌던 적이 있다. 4000시간 플레이.. 현생으로부터의 도피목적이었던 것 같다. 내 주변에 롤 티어를 올리려는 친구가 많은데, 그 중 나를 제외한 사람 중 목표를 달성한 사람은 못본거 같다. 오늘은 성장력을 올리는 방법에 대해 이야기해보려고 한다. 내 티어그래프를 보면 성장 그래프가 아주 가파르다. 친구들과 기간 내에 티어올리기 내기를 하면 전부 이겼다. 롤을 조금 해봤다 하는 사람이라면 플레는 게임만 많이하면 쉽게 달성할 수 있다고들 한다. 나도 아주 공감한다. 하지만 다이아는 노력 ..

[SW마에스트로] 소마 코딩 테스트 1차 합격 후기 / 공부법
회고록2022. 3. 5. 20:03[SW마에스트로] 소마 코딩 테스트 1차 합격 후기 / 공부법

1차 합격 !!! 문제 요약 문제는 총 8문제로 알고리즘 6, SQL 1, WEB 1으로 나왔다. 이번 코테는 오픈북과 자동완성이 허용되지 않았고, 난이도는 실버4~골드5정도로 나온거 같다. 알고리즘 분류를 복기해보자면 다음과 같다. 제한 시간은 모든 문제 100초, 메모리는 제한이 있지만 좀 널널하다. 티어는 시간제한을 생각하고 내가 임의로 주었다. 추가: 시간 제한 100초는 모든 테스트케이스를 돌리는 시간의 합이고. TLE로 터진다면, 100초 이후에 강제종료됩니다. 시험 환경에서 잘 돌아간다면 문제 X 다만 2차의 경우에는 시간복잡도 관련해서 질문할 수 도 있다고 합니다. 초록색 해결 빨간색 미해결 idx 알고리즘, 난이도 문제 요약 1 구현 S4 자동완성 가능한 수 구하기 문자열 리스트를 주고,..

Python2022. 3. 2. 10:30[파이썬] itertools, 완전탐색을 공부합시다.

완전탐색이란? 문제에서 주어질 수 있는 모든 경우의 수를 탐색하는 알고리즘을 말합니다. 이번 글에서는 알고리즘에서 주로 쓰는 조합형 완탐 함수 4가지를 소개합니다. product permutations combinations combinations_with_replacement 조합형 : product, 곱집합 대표적인 이름으로는 곱집합, 데카르트의 곱이라고 합니다. 곱집합은 for문 두개를 섞어놨다고 생각하시면 됩니다. product(p, q, … [repeat=1]) 이런 형태로 사용할 수 있습니다. 예시 itertools.product('1234', '1234') 또는 itertools.product('1234', repeat=2) [('1', '1'), ('1', '2'), ('1', '3'), ..

[프로그래머스 SQL] 보호소에서 중성화한 동물
프로그래머스 SQL 문제 해설2022. 2. 21. 18:23[프로그래머스 SQL] 보호소에서 중성화한 동물

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59045 들어올 때에는 비중성화, 나갈 때에는 중성화인 경우만 필터링 해서 보여줍니다. SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE INS.SEX_UPON_INTAKE LIKE 'Intact%' and (OUTS.SEX_UPON_OUTCOME LIKE 'Spayed%' or OUTS.SEX_UPON_OUTCOME LIKE 'Neutered%') ORDER BY INS.ANIMAL_ID LEFT JOIN으로 I..

[프로그래머스 SQL] 오랜 기간 보호한 동물(1)
프로그래머스 SQL 문제 해설2022. 2. 21. 18:01[프로그래머스 SQL] 오랜 기간 보호한 동물(1)

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59044 입양을 가지 못한 동물(JOIN 병합 후, OUTS의 값이 NULL인 경우) 중 DATETIME 순으로 정렬 후 LIMIT 3를 사용했다. SELECT INS.NAME, INS.DATETIME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE OUTS.ANIMAL_ID IS NULL ORDER BY INS.DATETIME LIMIT 3 결과

[프로그래머스 SQL] 있었는데요 없었습니다
프로그래머스 SQL 문제 해설2022. 2. 21. 17:41[프로그래머스 SQL] 있었는데요 없었습니다

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59043 이전문제와 로직이 동일합니다. SELECT INS.ANIMAL_ID, INS.NAME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID=OUTS.ANIMAL_ID WHERE INS.DATETIME > OUTS.DATETIME ORDER BY INS.DATETIME INS에서 ANIMAL_ID, NAME을 가져옵니다. A,B 각 두 테이블을 ID 기준으로 집합합니다. WHERE문으로 DATETIME이 들어온 시간보다 나간 시간이 더 빠를 때를 가져옵니다. 정렬은 INS의 DATETIME 기준으로 정렬합니다. 위와 같이 들어온 날짜가..

[프로그래머스 SQL] 없어진 기록 찾기
프로그래머스 SQL 문제 해설2022. 2. 21. 17:00[프로그래머스 SQL] 없어진 기록 찾기

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59042 JOIN문제입니다. ANIMAL_INS의 테이블이 유실되어서, ANIMAL_OUTS에는 있지만 ANIMAL_INS에는 없는 동물의 ID와 이름을 ID순으로 조회하세요. SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ANIMAL_OUTS OUTS LEFT JOIN ANIMAL_INS INS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID WHERE INS.ANIMAL_ID IS NULL ORDER BY OUTS.ANIMAL_ID 문제 해설: 먼저, LEFT JOIN으로 테이블OUTS에서 ID, NAME열의 값을 가져오고, INS에서는 OUTS와 일치하는 모든 A..

SQL | JOIN에 대하여
프로그래머스 SQL 문제 해설2022. 2. 21. 16:50SQL | JOIN에 대하여

소개할 JOIN문의 종류는 다음과 같습니다. INNER JOIN LEFT JOIN RIGHT JOIN OUTER JOIN [중괄호 안에 있는 부분은 생략해도 무관하다는 뜻입니다.] INNER JOIN 교집합입니다. 오른쪽 테이블 B에 일치하는 왼쪽 테이블 A의 모든 행을 반환합니다. SQL 예제 SELECT FROM Table_A A INNER JOIN Table_B B ON A.Key = B.Key LEFT [OUTER] JOIN 왼쪽 집합입니다. 오른쪽 테이블 B과 일치 여부는 관계없이, 테이블 A의 모든 행을 반환합니다. 그리고 오른쪽 테이블에서 일치하는 모든 행을 반환합니다. SQL예제 SELECT FROM Table_A A LEFT JOIN Table_B B ON A.Key = B.Key 문제 ..

[프로그래머스 SQL] NULL 처리하기
프로그래머스 SQL 문제 해설2022. 2. 21. 13:26[프로그래머스 SQL] NULL 처리하기

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59410 IFNULL으로 처리할 수 있습니다. IFNULL은 열 안의 행이 NULL일 때 변경해서 반환하는 역할을 합니다. SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC 결과 위에는 No name이 안보여서 내렸습니다.

[프로그래머스 SQL] 이름이 있는 동물의 아이디
프로그래머스 SQL 문제 해설2022. 2. 21. 13:13[프로그래머스 SQL] 이름이 있는 동물의 아이디

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59407 이름이 있는 경우, NULL이 아닐 때를 가져옵니다. IS NULL을 IS NOT NULL로 변경하였습니다. SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID ASC 결과

[프로그래머스 SQL] 이름이 없는 동물의 아이디
프로그래머스 SQL 문제 해설2022. 2. 21. 13:12[프로그래머스 SQL] 이름이 없는 동물의 아이디

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59039 WHERE으로 이름이 NULL인 경우의 ANIMAL_ID를 보여줍니다. SELECT ANIMAL_ID from ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID 결과

[프로그래머스 SQL] 입양 시각 구하기(2)
프로그래머스 SQL 문제 해설2022. 2. 20. 13:38[프로그래머스 SQL] 입양 시각 구하기(2)

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59413 해당 문제만 난이도 급상승이네요. 고득점 킷 중 최고 난이도 입양시각이 0 ~ 23인 시간대의 수를 전부 가져옵니다. SET @hour := -1; # 변수 선언문 SELECT (@hour := @hour + 1) as HOUR, (SELECT COUNT(DATETIME) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT FROM ANIMAL_OUTS WHERE @hour < 23 @hour이라는 변수에 -1을 대입합니다. (:= 대입연산자, = 비교연산자) SELECT 문에서 적어주는 열을 2가지입니다. 1. HOUR : 0 ~ 23까지 +1..

반응형
image