내일배움캠프/TIL

[TIL] 241128_코드카타,RAND함수

dydatablog 2024. 11. 28. 20:33
728x90

14. 가장 비싼 화장품 구하기

SELECT MAX(price) AS 'MAX_PRICE'
FROM PRODUCT;

 

16.경기도에 위치한 식품창고 목록 출력하기

SELECT 
    WAREHOUSE_ID,
    WAREHOUSE_NAME,
    ADDRESS,
    coalesce(FREEZER_YN, 'N') AS 'FREEZER_YN'
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '%경기도%'
ORDER BY 1 ;

 

17.강원도에 위치한 생산공장 목록 출력하기

SELECT 
    FACTORY_ID,
    FACTORY_NAME,
    ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '%강원도%'
ORDER BY 1 ;

 

 

18.DATETIME에서 DATE로 형 변환

SELECT 
    ANIMAL_ID,
    NAME,   
    DATE_FORMAT(DATETIME,'%Y-%m-%d') AS '날짜'
FROM ANIMAL_INS
ORDER BY 1;

 

19.흉부외과 또는 일반외과 의사 목록 출력하기

SELECT DR_NAME,
    DR_ID,
    MCDP_CD,
    DATE_FORMAT(HIRE_YMD, '%Y-%m-%d')
FROM DOCTOR
WHERE MCDP_CD IN ('GS','CS')
ORDER BY HIRE_YMD DESC;
 

20.가격이 제일 비싼 식품의 정보 출력하기

--틀린 코드
SELECT PRODUCT_ID,
    PRODUCT_NAME,
    PRODUCT_CD,
    CATEGORY,
    MAX(PRICE) AS 'PRICE'
FROM FOOD_PRODUCT;
--결과 : PRICE 부분만 가장 큰 값을 가져오고, 나머지는 맨 위에 값만 가지고 옴

 

 

 

정답:

--1. PRICE를 기준으로 내림차순 정렬하고 1개만 추출,
SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1;

--2. 1.의 경우 최댓값이 2개인 경우 오답처리 되므로, MAX, 서브쿼리 사용
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);

 

21.이름이 없는 동물의 아이디

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID;

 

22. 조건에 맞는 회원수 구하기

SELECT 
    COUNT(*) AS 'USERS'
FROM USER_INFO
WHERE age BETWEEN 20 and 29
 AND joined LIKE '2021%'

 

 

23. 중성화 여부 파악하기

--에러
SELECT ANIMAL_ID, NAME,
    IF (SEX_UPON_INTAKE LIKE 'Neutered%' OR 'Spayed%','O','X') AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

--정답
SELECT ANIMAL_ID, NAME,
    IF (SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%','O','X') AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 


라이브세션 실습쿼리

-- 1.거주하는 도시(city)별로 고객수 조회(고객수가 큰 도시부터 정렬)
SELECT 
	customer_city ,
	COUNT(*) 
FROM customers c
GROUP BY 1
ORDER BY 2 DESC ;

 

-- 2.거주하는 주(state)별로 고객수를 조회하고, 고객수가 10명 이상인 주(state)만 조회(고객수가 큰 도시부터 정렬)  
SELECT 
	customer_state,
	COUNT(*) as cnt
FROM customers c 
GROUP BY customer_state
HAVING cnt >= 10
ORDER BY cnt DESC ;

 

-- 3.고객테이블에서 10명 샘플링하기 

SELECT 
	*
from customers c 
order by rand()
limit 10;

https://dydatablog.tistory.com/40

 

[SQL]RAND함수

RAND 함수: 랜덤한 숫자를 불러오는 함수--i와 j 사이의 정수 R을 구하는 쿼리-- FLOOR(i + RAND() * (j − i))--7과 12사이의 정수SELECT FLOOR(7 + (RAND() * 5));   ORDER BY와 함께 사용하면, 랜덤한 순서로 데이터

dydatablog.tistory.com

 

728x90