본문 바로가기

전체 글153

SQL 중성화 여부 파악하기 O, X를 판별하고 출력하기 위해 IF문 사용했다. Neutered, Spayed로 시작하는 SEX_UPON_INTAKE 필드의 레코드를 찾기 위해 LIKE 사용했다. CASE WHEN 을 사용해도 잘 작동하지만 가독성 때문에, TRUE, FALSE로 나눠지는 문제라서 IF로 작성했다. 정답코드 SELECT ANIMAL_ID, NAME, IF( SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%' ,'O','X') AS '중성화' FROM ANIMAL_INS 원래 필드를 수정해서 조회하려고 엄청나게 돌아가다가 단순히 O, X 로 출력만 하면 되는걸 깨닫고 O, X 넣었더니 바로 정답처리가 되었다. REPLACE, ALTER, UPDATE에.. 2024. 3. 7.
SQL 카테고리 별 상품 개수 구하기 SUBSTRING함수로 문자열 슬라이싱 했다. GROUP BY로 중복을 찾고 COUNT(*)로 해당 레코드들의 갯수를 조회했다. 정답코드 SELECT SUBSTRING(PRODUCT_CODE,1,2) AS CATEGORY, COUNT(*) AS PRODUCTS FROM PRODUCT GROUP BY CATEGORY 2024. 3. 7.
SQL 나이 정보가 없는 회원 수 구하기 WHERE 절로 필터링된 레코드를 세기 위해 COUNT(*)을 사용했다. AGE가 NULL인 레코드를 필터링 하기 위해 AGE IN NULL 사용했다. SELECT COUNT(*) AS USERS from USER_INFO WHERE 1=1 AND AGE IS NULL 2024. 3. 7.
SQL DATETIME에서 DATE로 형 변환 ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 SQL문을 작성해주세요. 이때 결과는 아이디 순으로 조회해야 합니다. ANUMAL_ID, NAME, 날짜 로 출력하기 위해 SELECT문에서 조작했다. %Y-%m-%d , Y를 제외하고 소문자로 사용한 이유는 %Y-%M-%D 를 사용하게 되면 2024-march-7th 방식으로 출력하기에 소문자를 사용했다. 정렬은 문제에서 요구하지 않았기에 진행하지 않았다. 정답코드 SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, ('%Y-%m-%d')) AS '날짜' FROM ANIMAL_INS 2024. 3. 7.
sql 가격이 제일 비싼 식품의 정보 출력하기 FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요. 출력의 컬럼이 fOOD_PRODUCT 테이블의 모든 컬럼이기에 SELECT * 사용했다. 내림차순으로 정렬 후 1개 출력하기 위해 ORDER BY { } DESC LIMIT 1 사용했다. SELECT * FROM FOOD_PRODUCT ORDER BY PRICE DESC LIMIT 1 2024. 3. 7.
프로그래머스 데이터분석 데브코스 4-4 SQL 효율적으로 짜기 / 실수, 불필요한 것 줄이기 1. 테이블을 집합으로 생각하기 테이블을 집합으로 생각하기 = 최대한 작게 필터링 해서 쓰기 2. *, % 사용 지양하기 Limit 걸고 조회하기 파티션이 있는 테이블인지 확인하고 파티션을 필터 조건으로 걸고 조회하기 컬럼이 많은 테이블 조회 시 SELECT * 지양할것 LIKE 사용 시 % 제한적으로 사용하기 // 해당 필드의 형태에 맞게 _ 사용하는 방향, 최대한 탐색이 길어지지 않게. 3. 데이터 타입 잘 확인하기 SQL은 묵시적 형변환을 하기에 형변환에 들어가는 자원을 아끼기 위해 데이터 타입 확인할것 where 절에서 왼쪽 컬럼에 함수 적용 지양하기 // where 절 사용으로 필터링 과정에서 함수가 적용되는 것 보다 필터링 이후 함수 적용하.. 2024. 3. 7.
sql 오랜 기간 보호한 동물(1) 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다. 입양을 가지 못한 동물의 NAME, DATETIME을 조회하기 위해 select에 ANIMAL_INS를 사용했다 ANIAML_INS left join ANIMAL_OUTS 를 하면 ANIMAL_INS 테이블에만 있는 ANIMAL_ID (입양을 가지 못한 동물의 ID) 가 ANIMAL_OUTS 테이블에서는 존재할수가 없다. ID 기준으로 left join을 했을 때 입양을 가지 못한 동물의 ID의 레코드에 NULL값이 존재할 것이다. ANYMAL_TYPE, NAME, SEX_UPON_OUTCOME 컬럼 같은 경우에는 중복된 값들이 .. 2024. 3. 6.
프로그래머스 데이터분석 데브코스 4-3 4-2 에는 SQL의 주력 함수들을 배웠고 4-3에는 SQL에서의 Data type을 배웠다. 숫자 C와 같이 bit, tiny int, small int, int ( interger), big int, float, double 등이 있었다. 차지하는 메모리도 거의 유사하다. SQL에는 숫자 타입에 Bool 타입이 들어가 있었다. 말 그대로 True, False가 레코드에 들어가는 것이 아닌 tinyint(1)을 지정하여 1은 True, 0은 False 이런식으로 해서 사용한다고 한다. boolean 타입을 지원하는 DB도 있지만 지원하지 않는 DB도 존재하기에 쿼리 간 호환성을 높이기 위해서 tinyint(1)으로 boolean 타입을 사용한다. 그리고 boolean 타입을 지원하는 mysql 같은 경.. 2024. 3. 6.
Sql 이진 데이터 이진 데이터. 이진법으로 저장한 데이터. 이게 무슨 소리인가... 어떤 느낌인지 감이 오지않아 여러가지 조사해 보았다. GPT의 도움을 받았는데 단순히 사람이 봤을 때 '문자' 가 아닌 데이터들을 모두 이진 데이터로 저장하는 것 같다. 0, 1로 저장하는 이유는 NLP나 이미지 관련 머신러닝 모델을 만들 때 원 핫 인코딩 과정이 들어가는 것과 같다고 봤다. 어떻게 보면 매우 똑똑하지만 반대로 0과 1 바라기인 컴퓨터에게 이미지 파일을 그대로 넘겨주기엔 효율도 좋지 않고 그 파일을 온전히 제대로 이해했는지도 알 수 없다. 이 문제를 해결하기 위해 원 핫 인코딩 과정이 NLP, 이미지 처리에서 빠지지 않는다고 생각한다. DB저장도 마찬가지로 비디오 파일, 오디오 파일, 이미지 파일을 mp4, mp3, png.. 2024. 3. 6.