목차
접기
728x90
반응형
mysql 연습 데이터로 쿼리 작성해보는 사이트로 이동
위 링크로 이동해서 아래 쿼리를 입력해보자.
비상관 서브쿼리
연습 1
SELECT
CategoryID,
CategoryName,
Description,
(
SELECT ProductName FROM Products WHERE ProductID = 1
)
FROM Categories;
연습 2
SELECT *
FROM Products
WHERE Price < (
SELECT AVG(Price) FROM Products
);
연습 3
SELECT
CategoryID,
CategoryName,
Description
FROM Categories
WHERE CategoryID = (
SELECT CategoryID FROM Products WHERE ProductName = 'Chais'
);
연습 4
SELECT
CategoryID,
CategoryName,
Description
FROM Categories
WHERE CategoryID IN (
SELECT
CategoryID
FROM Products
WHERE Price > 50
);
- ~ ALL : 서브쿼리의 모든 결과에 대해 ~ 하다.
- ~ ANY : 서브쿼리의 하나 이상의 결과에 대해 ~ 하다.
연습 5
SELECT *
FROM Products
WHERE Price > ALL (
SELECT Price FROM Products WHERE CategoryID = 2
);
의미 : Products 테이블의 CategoryID 가 2인 Price들 모두 보다
큰 Price를 가진 데이터들을 출력하겠다는 의미이다.
MAX(Price) 보다 큰 의미로 해석해도 된다.
연습 6
SELECT
CategoryID,
CategoryName,
Description
FROM Categories
WHERE CategoryID = ANY(
SELECT
CategoryID
FROM Products
WHERE Price > 50
);
= ANY를 IN으로 바꾸어도 결과 값은 똑같다.
상관 서브쿼리
연습 1
SELECT
ProductID,
ProductName,
(
SELECT
CategoryName
FROM Categories C
WHERE C.CategoryID = P.CategoryID
) AS CategoryName
FROM Products P;
연습 2
SELECT
SupplierName,
Country,
City,
(
SELECT COUNT(*) FROM Customers C
WHERE C.Country = S.Country
) AS CustomersInTheCountry,
(
SELECT COUNT(*) FROM Customers C
WHERE C.Country = S.Country
AND C.City = S.City
) AS CustomerInTheCity
FROM Suppliers S;
연습 3
SELECT
CategoryID,
CategoryName,
(
SELECT MAX(Price) FROM Products P
WHERE P.CategoryID = C.CategoryID
) AS MaximumPrice,
(
SELECT AVG(Price) FROM Products P
WHERE P.CategoryID = C.CategoryID
) AS AveragePrice
FROM Categories C;
연습 4
SELECT
ProductID,
ProductName,
CategoryID,
Price,
(
SELECT AVG(Price) FROM Products P2
WHERE P2.CategoryID = P1.CategoryID
)
FROM Products P1
WHERE Price < (
SELECT AVG(Price) FROM Products P2
WHERE P2.CategoryID = P1.CategoryID
);
연습 5
SELECT
CategoryID,
CategoryName,
(
SELECT MAX(Price) FROM Products P
WHERE P.CategoryID = C.CategoryID
) AS MaximumPrice
FROM Categories C
WHERE EXISTS (
SELECT * FROM Products P
WHERE P.CategoryID = C.CategoryID
AND P.Price > 80
);
728x90
반응형
LIST
'SQL' 카테고리의 다른 글
[ mysql ] mysql 다른 데이터베이스 간 테이블 복사하는 방법 (0) | 2021.11.18 |
---|---|
[ mysql ] 새로 생성한 계정에 root 권한 부여 하는 방법 (0) | 2021.09.13 |
[ mysql ] 시간/날짜 관련 및 기타 함수들 (0) | 2021.09.05 |
[ mysql ] 숫자와 문자열을 다루는 함수(TRIM, LTRIM, RTRIM, LPAD, RPAD, INSTR) (0) | 2021.09.02 |
[ mysql ] 숫자와 문자열을 다루는 함수(SUBSTR, SUBSTRING, LEFT, RIGHT, LENGTH, CHAR_LENGTH, CHARACTER_LENGTH) (0) | 2021.09.02 |