회사에서 매일 쿼리를 작성하다 보니 기본기가 부족한 느낌이라 SELECT부터 도전해본다!

CAR_RENTAL_COMPANY_CAR 테이블에서 자동차 종류가 'SUV'인 자동차들의 평균 일일 대여 요금을 출력하는 SQL문을 작성해주세요. 이때 평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림하고, 컬럼명은 AVERAGE_FEE 로 지정해주세요.
SELECT round(avg(DAILY_FEE)) as AVERAGE_FEE from CAR_RENTAL_COMPANY_CAR where CAR_TYPE = 'SUV';

ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.
GROUP BY HAVING
GROUP BY는 같은 값이 있는 필드를 그룹으로 묶는 것이다. 문제에서는 중복으로 구매한 회원 아이디와 상품 아이디를 출력하는 것이므로 group by user_id, product_id를 하게 되면 중복도 제거된다. 그래서 그룹으로 묶고 몇번 샀는지 갯수를 체크해 2번 이상 구입한 회원을 출력하면 된다.
SELECT USER_ID, PRODUCT_ID ,count() from ONLINE_SALE group by PRODUCT_ID, USER_ID having count() > 1
order by user_id asc , PRODUCT_ID desc

2개 이상 산 갯수를 확인 후 정답을 제출했다.

ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.
select * from (
SELECT DATE_Format(SALES_DATE, '%Y-%m-%d') as SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
from ONLINE_SALE
union
SELECT DATE_Format(SALES_DATE, '%Y-%m-%d') as SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE) ta
where Month(SALES_DATE) = 3
order by SALES_DATE asc , PRODUCT_ID asc , USER_ID asc
union으로 테이블을 합치고 , 공통 조건인 3월, 정렬방식은 밖으로 빼줬다!

동물 보호소에 들어온 동물 중 아픈 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
SELECT ANIMAL_ID, NAME from ANIMAL_INS where INTAKE_CONDITION = 'SICK';
젊은 동물은 INTAKE_CONDITION 이 Aged가 아닌 동물이다.
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != 'Aged'
order by ANIMAL_ID asc;
동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요.
SELECT ANIMAL_ID, NAME from ANIMAL_INS order by ANIMAL_ID asc ;
동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.
SELECT ANIMAL_ID, NAME, DATETIME from ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC;
동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요.
SELECT * from ANIMAL_INS order by ANIMAL_ID asc;

동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.
limit은 맨 위에서부터 몇번째의 값까지 볼것인가를 정한다. 나는 orderBy dateTime으로 첫번째 값만 볼것이다!
SELECT name from ANIMAL_INS ORDER BY DATETIME limit 1;

USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요.
SELECT count(USER_ID) as USERS FROM USER_INFO
where 20 <= AGE and AGE <= 29
AND YEAR(JOINED) = '2021';

SELECT BOOK_ID,DATE_Format(PUBLISHED_DATE, '%Y-%m-%d') as PUBLISHED_DATE from BOOK WHERE CATEGORY = '인문'
and year(PUBLISHED_DATE) = '2021'
order by PUBLISHED_DATE asc;

PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.
SELECT PT_NAME, PT_NO, GEND_CD, AGE, ifnull(TLNO, 'NONE') as TLNO from PATIENT
where AGE <= 12 and GEND_CD = 'W'
order by AGE desc , PT_NAME asc;

USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해주세요. 결과는 댓글 작성일을 기준으로 오름차순 정렬해주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해주세요.
SELECT b.TITLE, b.BOARD_ID , r.REPLY_ID, r.WRITER_ID, r.CONTENTS, DATE_Format(b.CREATED_DATE, '%Y-%m-%d') as CREATED_DATE
from USED_GOODS_BOARD b
inner
join USED_GOODS_REPLY r
on b.BOARD_ID = r.BOARD_ID
where month(b.CREATED_DATE) = 10
order by r.CREATED_DATE asc , b.TITLE asc
SELECT A.TITLE
, A.BOARD_ID
, B.REPLY_ID
, B.WRITER_ID
, B.CONTENTS
, DATE_FORMAT(B.CREATED_DATE, '%Y-%m-%d') AS CRAETED_DATE
FROM USED_GOODS_BOARD AS A
INNER
JOIN USED_GOODS_REPLY AS B
ON A.BOARD_ID = B.BOARD_ID
WHERE SUBSTR(A.CREATED_DATE,1,7) = '2022-10'
ORDER
BY B.CREATED_DATE ASC, A.TITLE ASC;
둘의 기능은 동일하지만 프로그램에서는 결과가 아니라고 해서 고민해봤는데 CRAETED_DATE의 날짜가 달랐었다. 댓글이 생성된것을 기준으로 CRAETED_DATE를 고쳐주니 정답이라고 나왔다.
DATE_Format(r.CREATED_DATE, '%Y-%m-%d') as CREATED_DATE

DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') as HIRE_YMD from DOCTOR where MCDP_CD = 'CS' or MCDP_CD = 'GS'
order by HIRE_YMD desc, HIRE_YMD asc

SELECT FLAVOR from FIRST_HALF order by TOTAL_ORDER desc , SHIPMENT_ID asc

상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성해주세요.
SELECT info.FLAVOR from FIRST_HALF info
inner join ICECREAM_INFO ice
on ice.FLAVOR = info.FLAVOR
where info.TOTAL_ORDER > 3000 and INGREDIENT_TYPE = 'fruit_based'
레벨 1은 거의 다 했다 끝!