CS(ComputerScience) 18

프로그래머스(Oracle) 1단계 - 루시와 엘라 찾기

1. 문제동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.2. 답2-1. 답select animal_id, name, sex_upon_intake from animal_ins where name like '%Lucy%' or name like '%Ella%' or name like '%Pickle%' or name like '%Rogan%' or name like '%Sabrina%' or name like '%Mitty%' order by animal_id;2-2. 답..

프로그래머스(Oracle) 1단계 - 특정 옵션이 포함된 자동차 리스트 구하기

1. 문제CAR_RENTAL_COMPANY_CAR 테이블에서 '네비게이션' 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성해주세요. 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.2. 답SELECT *from car_rental_company_carwhere options like '%네비게이션%'order by car_id desc;3. 설명LIKE '%네비게이션%'은 옵션 문자열 안에 '네비게이션'이라는 단어가 포함된 자동차를 찾겠다는 뜻입니다.LIKE는 문자열 비교 시 사용하며, %는 어떤 문자열이든 대체하는 와일드카드입니다.

프로그래머스(Oracle) 1단계 - 조건에 맞는 회원수 구하기

1. 문제USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요.2. 답SELECT count(*) usersfrom user_infowhere '2021' = to_char(joined, 'YYYY') and age between 20 and 29;3. 설명3-1. TO_CHAR(joined, 'YYYY') = '2021' → 연도 비교3-2. age BETWEEN 20 AND 29 → 나이 범위3-3. 둘 다 TRUE여야 전체 조건식이 TRUE

프로그래머스(Oracle) 1단계 - 상위 n개 레코드

1. 문제동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.2. 답select namefrom ( select name from animal_ins order by datetime)where rownum =1;3. 설명결과셋에 조건을 걸기 위해서는 서브쿼리로 먼저 정렬한 후, ROWNUM으로 상위 몇 개만 출력할지 필터링한다.Tip: ROWNUM은 Oracle에서 결과 행에 대해 자동으로 부여되는 일시적인 번호로, 1부터 시작하여 순차적으로 할당된다. 하지만 정렬 이후에 부여되는 것이 아니라, 정렬 이전에 먼저 부여되므로, 정렬된 결과 기준으로 상위 N개를 가져오고 싶다면 반드시 서브쿼리로 정렬을 먼저 수행한 후 ROWNUM을 적용해야 한다.

프로그래머스(Oracle) 1단계 - 재구매가 일어난 상품과 회원 리스트 구하기

1. 문제ONLNIE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.2. 답SELECT user_id, product_idfrom online_salegroup by user_id, product_idhaving count(*)>=2order by user_id asc, product_id desc;3. 설명3-1. GROUP BY USER_ID, PRODUCT_ID설명: 사용자와 상품의 조합별로 데이터를 그룹화합니다.Tip: Oracle, PostgreSQL, ANSI SQL 표준 기반 ..

프로그래머스 쿼리 문제(MySQL) - 대장균의 크기에 따라 분류하기 2

selectid,case size_of_colony_groupwhen 1 then 'CRITICAL'when 2 then 'HIGH'when 3 then 'MEDIUM'when 4 then 'LOW'end as colony_namefrom (select id, ntile(4) over (order by size_of_colony desc) as size_of_colony_groupfrom ecoli_data) as suborder by id;윈도우 함수 + 서브쿼리로 그룹 분류하기: 핵심 개념 요약특정 기준(예: 크기, 점수, 매출 등)에 따라 데이터를 **상대적 그룹(분위, 등분)**으로 나누고 싶은 경우가 있다. 이때 유용하게 사용하는 것이 바로 **윈도우 함수 NTILE()**와 서브쿼리..

프로그래머스 쿼리 문제(MySQL) - 부모의 형질을 모두 가지는 대장균 찾기(셀프 조인)

SELECT child.ID, child.GENOTYPE, parent.GENOTYPE AS PARENT_GENOTYPEFROM ECOLI_DATA AS childJOIN ECOLI_DATA AS parentON child.PARENT_ID = parent.IDWHERE (child.GENOTYPE & parent.GENOTYPE) = parent.GENOTYPEORDER BY child.ID ASC;셀프 조인(Self Join)의 개념과 연산 과정1. 셀프 조인이란?하나의 테이블을 두 개처럼 사용해서, 서로 다른 행(레코드)을 부모-자식처럼 조인해서 비교하는 방식입니다.SELECT child.ID, child.GENOTYPE, parent.GENOTYPE AS PARENT_GE..

비트마스킹 핵심 정리

비트마스킹(Bitmasking)이란?비트마스킹은 하나의 정수값(숫자)을 이용해 여러 상태나 속성 정보를 효율적으로 저장하고, 빠르게 판별하거나 조작할 수 있도록 하는 기법입니다. 운영체제, 게임 개발, 권한 설정, 데이터베이스 등 다양한 곳에서 폭넓게 활용됩니다.핵심 개념1. 비트는 2진수의 각 자리숫자는 내부적으로 2진수(0과 1)로 표현되며, 각 자리는 2의 거듭제곱을 의미합니다.비트 자리2진수 값의미1번째 (오른쪽)2⁰ = 1형질1, 상태1 등2번째2¹ = 2형질2, 상태2 등3번째2² = 4형질3, 상태3 등4번째2³ = 8형질4, 상태4 등여러 비트를 더한 값으로 여러 상태를 한 번에 표현할 수 있습니다.예: 13 = 1101 → 형질1(1), 형질3(4), 형질4(8) 보유상태 확인 방법 (비..