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.