📅2024. 01. 09 22일차
if (articleMap.isEmpty()) {0
System.out.println(id + "번 글은 없습니다.");
return 0;
}
가장 큰 사원 번호 출력
🔑내 풀이
SELECT id AS '가장 큰 사원 번호'
FROM emp
ORDER BY id DESC LIMIT 1;
🔑슨생님 풀이
SELECT MAX(id)
FROM emp
부서별, 1년 고정 지출(인건비)
🔑내 풀이
SELECT SUM(salary) AS '홍보부서, 1년 고정 지출'
FROM emp
WHERE deptName = '홍보';
SELECT SUM(salary) AS '기획부서, 1년 고정 지출'
FROM emp
WHERE deptName = '기획';
🔑슨생님 풀이
SELECT deptId, SUM(salary)
FROM emp
GROUP BY deptId;
쇼핑물 db 연습 문제
🔑 (table join x ver.)
# 1. 손흥민의 주문 개수는? ???
SELECT COUNT(*)
FROM t_shopping
WHERE userName = '손흥민';
# 2. 손흥민이 산 상품은? ???
SELECT DISTINCT pname
FROM t_shopping
WHERE userName = '손흥민';
# 3. 스커트를 산 사람은? ???
SELECT DISTINCT userName
FROM t_shopping
WHERE pname = '스커트';
# 4. 가장 많이 주문한 사람의 아이디와 이름, 주문개수는? ???
SELECT userId, userName, COUNT(userId)
FROM t_shopping
GROUP BY userId
LIMIT 1;
# 5. 소지섭이 사용한 총 금액은? ???
SELECT SUM(price)
FROM t_shopping
WHERE userName = '소지섭';
🔑 (table join o ver.)
# 1. 손흥민의 주문 개수는? ???
SELECT u.userName, COUNT(o.userNo)
FROM t_order AS o
INNER JOIN t_user AS u
ON o.userNo = u.id
WHERE u.userName = '손흥민';
# 2. 손흥민이 산 상품과 각 상품별 개 수는???
SELECT p.pname, COUNT(*)
FROM t_order AS o
INNER JOIN t_user AS u
ON o.userNo = u.id
INNER JOIN t_product AS p
ON o.productNo = p.id
WHERE u.userName = '손흥민'
GROUP BY p.id;
# 3. 스커트를 산 사람은? ???
SELECT DISTINCT u.userName
FROM t_user AS u
INNER JOIN t_order AS o
ON o.userNo = u.id
INNER JOIN t_product AS p
ON o.productNo = p.id
WHERE p.pname = '스커트';
# 4. 가장 많이 주문한 사람의 아이디와 이름, 주문개수는? ???
SELECT u.userId, u.userName, COUNT(*)
FROM t_order AS o
INNER JOIN t_user AS u
ON o.userNo = u.id
GROUP BY u.id
ORDER BY COUNT(*) DESC
LIMIT 1;
# 5. 소지섭이 사용한 총 금액은? ???
SELECT u.userName, SUM(p.price)
FROM t_product AS p
INNER JOIN t_order AS o
ON o.productNo = p.id
INNER JOIN t_user AS u
ON o.userNo = u.id
WHERE u.userName = '소지섭';
상황에 맞는 SQL을 작성해주세요, SUM, MAX, MIN, COUNT 문제
🔑 (table join x ver.)
부서별, 부서명, 사원리스트, 평균연봉, 최고연봉, 최소연봉, 사원수 나오게~~
SELECT E.deptId AS 부서번호,
GROUP_CONCAT(E.name) AS 사원리스트,
TRUNCATE(AVG(E.salary), 0) AS 평균연봉,
MAX(E.salary) AS 최고연봉,
MIN(E.salary) AS 최소연봉,
COUNT(*) AS 사원수
FROM emp AS E
GROUP BY E.deptId;
🔑 (table join o ver.)
SELECT D.name AS 부서,
GROUP_CONCAT(E.name) AS 사원리스트,
TRUNCATE(AVG(E.salary), 0) AS 평균연봉,
MAX(E.salary) AS 최고연봉,
MIN(E.salary) AS 최소연봉,
COUNT(*) AS 사원수
FROM emp AS E
INNER JOIN dept AS D
ON E.deptId = D.id
GROUP BY E.deptId;