🚩오늘의 문제는?
SQL - level 3
1.조건에 맞는 사용자와 총 거래금액 조회
2.💥즐겨찾기가 가장 많은 식당 정보 출력하기
3.없어진 기록 찾기
4.조건에 맞는 사용자 정보 조회하기
5.부서별 평균 연봉 조회하기
6.대장균의 크기에 따라 분류하기 1

SELECT USER_ID,NICKNAME,SUM(PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD A JOIN USED_GOODS_USER B
ON A.WRITER_ID=B.USER_ID
WHERE STATUS='DONE'
GROUP BY USER_ID
HAVING SUM(PRICE)>=700000
ORDER BY TOTAL_SALES ASC;

SELECT FOOD_TYPE,REST_ID,REST_NAME,FAVORITES
FROM REST_INFO R
WHERE FAVORITES =
(
SELECT MAX(FAVORITES)
FROM REST_INFO R2
WHERE R.FOOD_TYPE = R2.FOOD_TYPE)
ORDER BY FOOD_TYPE DESC
;
SELECT R2.FOOD_TYPE,R2.REST_ID,R2.REST_NAME, R2.FAVORITES
FROM(
SELECT R.FOOD_TYPE, R.REST_ID, R.REST_NAME , R.FAVORITES, ROW_NUMBER() OVER (
PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) AS RN
FROM REST_INFO R) AS R2
WHERE R2.RN=1
ORDER BY FOOD_TYPE DESC;
윈도우 함수 이용해서 구하기 : ROW_NUMBER() OVER 함수를 따로 써서 해당 값을 WHERE 절에
조건으로 걸어야한다.
WHERE 절 안 서브쿼리 활용해서 구하기 : 즐겨찾기를 종류별로 묶어야한다.
https://moonpiechoi.tistory.com/128

SELECT B.ANIMAL_ID, B.NAME
FROM ANIMAL_INS A RIGHT JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.ANIMAL_ID IS NULL;

SELECT USER_ID,NICKNAME, CONCAT(CITY,' ',STREET_ADDRESS1,' ',STREET_ADDRESS2) AS 전체주소,
CONCAT(SUBSTR(TLNO,1,3),'-',SUBSTR(TLNO,4,4),'-',SUBSTR(TLNO,8,4)) AS 전화번호
FROM USED_GOODS_BOARD A JOIN USED_GOODS_USER B
ON A.WRITER_ID = B.USER_ID
GROUP BY A.WRITER_ID
HAVING COUNT(A.WRITER_ID )>=3
ORDER BY B.USER_ID DESC ;
SELECT USER_ID, NICKNAME,
CONCAT(CITY,' ',STREET_ADDRESS1,' ',STREET_ADDRESS2) AS 전체주소,
CONCAT(SUBSTR(TLNO, 1, 3), '-', SUBSTR(TLNO, 4, 4), '-', SUBSTR(TLNO, 8, 4)) AS 전화번호
FROM USED_GOODS_USER
WHERE (
SELECT COUNT(*) FROM USED_GOODS_BOARD
WHERE USER_ID = WRITER_ID) >= 3
ORDER BY USER_ID DESC
SELECT
USER_ID,
NICKNAME,
CONCAT(CITY, ' ', STREET_ADDRESS1, ' ', STREET_ADDRESS2) '전체주소',
CONCAT(SUBSTRING(TLNO , 1 , 3) , '-' , SUBSTRING(TLNO , 4 , 4) , '-' , SUBSTRING(TLNO , 8 , 4)) '전화번호'
FROM
USED_GOODS_USER
WHERE
USER_ID IN (SELECT WRITER_ID AS USER_ID
FROM USED_GOODS_BOARD
GROUP BY WRITER_ID
HAVING COUNT(*) >= 3)
ORDER BY
USER_ID DESC

SELECT AVG(SAL) AS AVG_SAL
FROM HR_DEPARTMENT D JOIN HR_EMPLOYEES E
ON D.DEPT_ID= E.DEPT_ID
GROUP BY DEPT_NAME_KR
SELECT DEPT_ID, DEPT_NAME_EN,
(SELECT ROUND(AVG(SAL),0)
FROM HR_EMPLOYEES E
WHERE E.DEPT_ID=D.DEPT_ID
GROUP BY DEPT_NAME_KR) AS AVG_SAL
FROM HR_DEPARTMENT D
ORDER BY AVG_SAL DESC;
SELECT A.DEPT_ID, A.DEPT_NAME_EN,ROUND(AVG(SAL),0) AS AVG_SAL
FROM HR_DEPARTMENT A JOIN HR_EMPLOYEES B
ON A.DEPT_ID= B.DEPT_ID
GROUP BY A.DEPT_ID
ORDER BY AVG_SAL DESC;

SELECT ID,
CASE WHEN SIZE_OF_COLONY <= 100 THEN 'LOW'
WHEN SIZE_OF_COLONY>1000 THEN 'HIGH'
ELSE 'MEDIUM'
END AS SIZE
FROM ECOLI_DATA;