Bagikan melalui


Fungsi Kanonis Agregat

Agregat adalah ekspresi yang mengurangi serangkaian nilai input menjadi, misalnya, satu nilai. Agregat biasanya digunakan bersama dengan klausul GROUP BY dari ekspresi SELECT, dan ada batasan di mana mereka dapat digunakan.

Fungsi kanonis SQL Entitas Agregat

Berikut ini adalah fungsi kanonis SQL Entitas agregat.

Avg(expression)

Mengembalikan rata-rata nilai non-null.

Argumen

Int32, Int64, Double, dan Decimal.

Mengembalikan Nilai

Jenis expression, atau null jika semua nilai input adalah nilai null.

Contoh

queryString = @"SELECT VALUE AVG(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE AVG(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

BigCount(expression)

Mengembalikan ukuran agregat termasuk nilai null dan duplikat.

Argumen

Jenis apa pun.

Mengembalikan Nilai

Sebuah Int64.

Contoh

queryString = @"SELECT VALUE BigCount(p.ProductID)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE BigCount(p.ProductID) 
FROM AdventureWorksEntities.Products AS p 

COUNT(expression)

Mengembalikan ukuran agregat termasuk nilai null dan duplikat.

Argumen

Jenis apa pun.

Mengembalikan Nilai

Sebuah Int32.

Contoh

queryString = @"SELECT VALUE Count(p.ProductID)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE Count(p.ProductID) 
FROM AdventureWorksEntities.Products AS p 

MAX(expression)

Mengembalikan nilai maksimum non-null.

Argumen

Byte, Int16, Int32, Int64, Byte, Single, Double, Decimal, DateTime, DateTimeOffset, Time, String, Binary.

Mengembalikan Nilai

Jenis expression, atau null jika semua nilai input adalah nilai null.

Contoh

queryString = @"SELECT VALUE MAX(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE MAX(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

MIN(expression)

Mengembalikan nilai minimum non-null.

Argumen

Byte, Int16, Int32, Int64, Byte, Single, Double, Decimal, DateTime, DateTimeOffset, Time, String, Binary.

Mengembalikan Nilai

Jenis expression, atau null jika semua nilai input adalah nilai null.

Contoh

queryString = @"SELECT VALUE MIN(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE MIN(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

StDev(expression)

Mengembalikan simpangan baku dari nilai non-null.

Argumen

Int32, Int64, Double, Decimal.

Mengembalikan Nilai

Double. Null, jika semua nilai input adalah nilai null.

Contoh

queryString = @"SELECT VALUE StDev(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE StDev(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

StDevP(expression)

Mengembalikan simpangan baku untuk isi semua nilai.

Argumen

Int32, Int64, Double, Decimal.

Mengembalikan Nilai

Double, atau null jika semua nilai input adalah nilai null.

Contoh

queryString = @"SELECT VALUE StDevP(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE StDevP(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

SUM(expression)

Mengembalikan jumlah nilai non-null.

Argumen

Int32, Int64, Double, Decimal.

Mengembalikan Nilai

Double, atau null jika semua nilai input adalah nilai null.

Contoh

queryString = @"SELECT VALUE Sum(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE Sum(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

Var(expression)

Mengembalikan varians dari semua nilai non-null.

Argumen

Int32, Int64, Double, Decimal.

Mengembalikan Nilai

Double, atau null jika semua nilai input adalah nilai null.

Contoh

queryString = @"SELECT VALUE Var(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE Var(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

VarP(expression)

Mengembalikan varians untuk isi dari semua nilai non-null.

Argumen

Int32, Int64, Double, Decimal.

Mengembalikan Nilai

Double, atau null jika semua nilai input adalah nilai null.

Contoh

queryString = @"SELECT VALUE VarP(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE VarP(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

Fungsionalitas yang setara tersedia di Penyedia Terkelola Klien Microsoft SQL. Untuk informasi selengkapnya, lihat SqlClient untuk Fungsi Entity Framework.

Agregat berbasis koleksi

Agregat berbasis koleksi (fungsi koleksi) beroperasi pada koleksi dan mengembalikan nilai. Misalnya jika ORDERS adalah kumpulan dari semua pesanan, Anda dapat menghitung tanggal pengiriman paling awal dengan ekspresi berikut:

min(select value o.ShipDate from LOB.Orders as o)

Ekspresi di dalam agregat berbasis koleksi dievaluasi dalam cakupan resolusi nama sekitar saat ini.

Agregat berbasis grup

Agregat berbasis grup dihitung melalui grup seperti yang didefinisikan oleh klausul GROUP BY. Untuk setiap grup dalam hasil, agregat terpisah dihitung menggunakan elemen di setiap grup sebagai input untuk penghitungan agregat. Saat klausul group-by digunakan dalam ekspresi pilih, hanya nama ekspresi pengelompokan, agregat, atau ekspresi konstanta yang dapat ada dalam proyeksi atau klausul order-by.

Contoh berikut menghitung jumlah rata-rata yang dipesan untuk setiap produk:

select p, avg(ol.Quantity) from LOB.OrderLines as ol
  group by ol.Product as p

Dimungkinkan untuk memiliki agregat berbasis grup tanpa klausul group-by eksplisit dalam ekspresi SELECT. Dalam kasus ini, semua elemen diperlakukan sebagai satu grup. Ini setara dengan menentukan pengelompokan berdasarkan konstanta. Misalnya saja, ekspresi berikut:

select avg(ol.Quantity) from LOB.OrderLines as ol

Ini setara dengan yang berikut:

select avg(ol.Quantity) from LOB.OrderLines as ol group by 1

Ekspresi di dalam agregat berbasis grup dievaluasi dalam cakupan resolusi nama yang akan terlihat oleh ekspresi klausul WHERE.

Seperti pada Transact-SQL, agregat berbasis grup juga dapat menentukan pengubah ALL atau DISTINCT. Jika pengubah DISTINCT ditentukan, duplikat dihapus dari kumpulan input agregat, sebelum agregat dihitung. Jika pengubah ALL ditentukan (atau jika tidak ada pengubah yang ditentukan), tidak ada penghapusan duplikat yang dilakukan.

Lihat juga