sql >> データベース >  >> RDS >> Sqlserver

SelectQueryでGroupbyを使用してHaving句を適用する方法-SQLServer/TSQLチュートリアルパート131

    シナリオ:

    SQL Server開発者として働いている場合、CountryShortNameによってdbo.CustomerテーブルからTotalSaleAmountを返すクエリを作成するように求められます。また、CountryShortNameによるTotalSaleAmountが10より大きいレコードをフィルタリングするように求められます。


    解決策:

    上記のシナリオから、いくつかのことに気づきました。まず、SaleAmountを合計する必要があります。次に、SaleAmountbyCountryShortNameでグループ化する必要があります。合計を計算した後にこれらのレコードをフィルタリングする必要がある最後のことは、SaleAmountの合計が10より大きい場合にのみ返されます。ここでは、Groupbyの前にレコードをフィルタリングするWhere句を使用できません。 SQL Serverは、groupbyの後にレコードをフィルタリングするために使用できるHaving句を提供します。
    以下のレコードを使用してdbo.CustomerTableを作成し、GroupbyおよびHaving句を使用してクエリを記述します。

    Create table dbo.Customer
     (Id int,
      FName VARCHAR(50),
      LName VARCHAR(50),
      CountryShortName CHAR(2),
      SaleAmount Int)
    GO
    --Insert Rows in dbo.Customer Table
    insert into dbo.Customer
    Values (
    1,'Raza','M','PK',10),
    (2,'Rita','John','US',12),
    (3,'Sukhi','Singh',Null,25),
    (4,'James','Smith','CA',60),
    (5,'Robert','Ladson','US',54),
    (6,'Alice','John','US',87),
    (6,'John',Null,'US',Null)
     
     
     Group byを使用してクエリを記述し、Sum(SaleAmount)が10より大きいレコードをフィルタリングする必要があるを使用してみましょう。
    SELECT countryshortname, 
           Sum(saleamount) SaleAmountByCountry 
    FROM   dbo.customer 
    GROUP  BY countryshortname 
    HAVING Sum(saleamount) > 10 
     SQLでHaving句を使用して集約データをフィルタリングする方法


    ビデオデモ:SQLSelectステートメントでHaving句を使用する方法

     



    1. MySQLクエリがデータベーステーブルデータの変更に成功したかどうかをテストするにはどうすればよいですか?

    2. テーブルが存在する場合、それを削除するにはどうすればよいですか?

    3. プリズマ関係

    4. パフォーマンスの問題:最初の遭遇