탐구생활/SQL 탐구생활

SQL 기초 구문 배우기(SQL HAVING)

daily uza 2023. 5. 26.
728x90

목차

    SQL HAVING

    WHERE 키워드는 집계 함수와 함께 사용할 수 없기 때문에 HAVING 절이 SQL에 추가되었습니다.

    SQL HAVING 기본예제

    SSELECT column_name(s)
    FROM table_name
    WHERE condition
    GROUP BY column_name(s)
    HAVING condition
    ORDER BY column_name(s);

    SQL HAVING 실습하기

    다음은 Northwind 샘플 데이터베이스의 "Customers" 테이블에서 선택한 항목입니다.

    CustomerID CustomerName ContactName Address City PostalCode Country
    1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
    2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
    3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
    4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
    5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

    다음 SQL 문은 각 국가의 고객 수를 나열합니다. 고객이 5명 이상인 국가만 포함:

    SELECT COUNT(CustomerID), Country
    FROM Customers
    GROUP BY Country
    HAVING COUNT(CustomerID) > 5;

    다음 SQL 문은 높은 수준에서 낮은 수준으로 정렬된 각 국가의 고객 수를 나열합니다(고객이 5명 이상인 국가만 포함).

    SELECT COUNT(CustomerID), Country
    FROM Customers
    GROUP BY Country
    HAVING COUNT(CustomerID) > 5
    ORDER BY COUNT(CustomerID) DESC;

    SQL HAVING 실습하기2

    다음은 Northwind 샘플 데이터베이스의 "Orders" 테이블에서 선택한 항목입니다.
    OrderID CustomerID EmployeeID OrderDate ShipperID
    10248 90 5 1996-07-04 3
    10249 81 6 1996-07-05 1
    10250 34 4 1996-07-08 2
    그리고 "Employees" 테이블에서 선택:
    EmployeeID LastName FirstName BirthDate Photo Notes
    1 Davolio Nancy 1968-12-08 EmpID1.pic Education includes a BA....
    2 Fuller Andrew 1952-02-19 EmpID2.pic Andrew received his BTS....
    3 Leverling Janet 1963-08-30 EmpID3.pic Janet has a BS degree....

    다음 SQL 문은 10개 이상의 주문을 등록한 직원을 나열합니다.
    SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
    FROM (Orders
    INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
    GROUP BY LastName
    HAVING COUNT(Orders.OrderID) > 10;
    다음 SQL 문은 직원 "Davolio" 또는 "Fuller"가 25개 이상의 주문을 등록했는지 여부를 나열합니다.
    SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
    FROM Orders
    INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
    WHERE LastName = 'Davolio' OR LastName = 'Fuller'
    GROUP BY LastName
    HAVING COUNT(Orders.OrderID) > 25;

    Written by [DAILY UZA]

    728x90

    댓글

    💲 추천 글