SELECT
CategoryID, CategoryName, Description,
(SELECT ProductName FROM Products WHERE ProductID = 1)
FROM Categories;
📌 Categories 테이블에서 CategoryID, CategoryName, Description Column과 Products 테이블에서 ProductID = 1 인 ProductName 데이터
SELECT * FROM Products
WHERE Price < (
SELECT AVG(Price) FROM Products
);
📌 Products 테이블에서 Price의 평균값보다 작은 데이터
SELECT
CategoryID, CategoryName, Description
FROM Categories
WHERE
CategoryID =
(SELECT CategoryID FROM Products
WHERE ProductName = 'Chais');
📌 Categories 테이블에서 CategoryID가 서브쿼리에 충족하는 데이터 중 CategoryID, CategoryName, Description Column
SELECT
CategoryID, CategoryName, Description
FROM Categories
WHERE
CategoryID IN
(SELECT CategoryID FROM Products
WHERE Price > 50);
📌
SELECT * FROM Products
WHERE Price > ALL (
SELECT Price FROM Products
WHERE CategoryID = 2
);
📌 해당 서브쿼리의 값 모두를 충족시키는 즉 최댓값을 출력
SELECT
CategoryID, CategoryName, Description
FROM Categories
WHERE
CategoryID = ANY
(SELECT CategoryID FROM Products
WHERE Price > 50);
📌 해당 서브쿼리 안에 있는 데이터만
SELECT
ProductID, ProductName,
(
SELECT CategoryName FROM Categories C
WHERE C.CategoryID = P.CategoryID
) AS CategoryName
FROM Products P;
📌 Products 테이블에서 ProductID, ProuductName 을 가져오고, Categories 테이블에서의 CategoryID와 Products에서 CategoryID가 같은 값을 CategoryName으로 가져오겠다.
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 CustomersInTheCity
FROM Suppliers S;
📌 Suppliers 테이블에서 SupplierName, Country, City을 가지고 오고, Customers 테이블에서 Suppliers 테이블의 Country가 서로 같은 값들을 CustomersInTheCountry이라는 별칭으로 그 숫자를 카운트 해서 가지고 오고, ... City도 마찬가지
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;
📌 각 카테고리에 속한 최고값, 평균값 가지고 오기
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
);
📌 각 카테코리의 평균값보다 작은 값들을 가지고 오겠다.
SELECT
CategoryID, CategoryName
-- ,(SELECT MAX(P.Price) FROM Products P
-- WHERE P.CategoryID = C.CategoryID
-- ) AS MaxPrice
FROM Categories C
WHERE EXISTS (
SELECT * FROM Products P
WHERE P.CategoryID = C.CategoryID
AND P.Price > 80
);
📌