Aracılığıyla paylaş


GROUPPARTITION (Entity SQL)

Toplamanın ilişkili olduğu geçerli grup bölümünden yansıtılan bir bağımsız değişken değerleri koleksiyonu döndürür. Toplama GroupPartition , grup tabanlı bir toplamadır ve koleksiyon tabanlı bir forma sahip değildir.

Sözdizimi

GROUPPARTITION( [ALL|DISTINCT] expression )

Tartışmalar

expression Herhangi bir Varlık SQL ifadesi.

Açıklamalar

Aşağıdaki sorgu, bir ürün listesi ve her ürün için sipariş satırı miktarları koleksiyonu oluşturur:

SELECT p, GroupPartition(ol.Quantity) FROM LOB.OrderLines AS ol
  GROUP BY ol.Product AS p

Aşağıdaki iki sorgu, eşanlamlı olarak eşittir:

SELECT p, Sum(GroupPartition(ol.Quantity)) FROM LOB.OrderLines AS ol
  GROUP BY ol.Product AS p
SELECT p, Sum(ol.Quantity) FROM LOB.OrderLines AS ol
  group by ol.Product as p

GROUPPARTITION işleç, kullanıcı tanımlı toplama işlevleriyle birlikte kullanılabilir.

GROUPPARTITION , gruplandırılmış giriş kümesine başvuru tutan özel bir toplama işlecidir. Bu başvuru, GROUP BY'ın kapsam dahilinde olduğu sorgunun herhangi bir yerinde kullanılabilir. Örneğin:

SELECT p, GroupPartition(ol.Quantity) FROM LOB.OrderLines AS ol GROUP BY ol.Product AS p

Normal GROUP BYile gruplandırma sonuçları gizlenir. Sonuçları yalnızca bir toplama işlevinde kullanabilirsiniz. Gruplandırma sonuçlarını görmek için, bir alt sorgu kullanarak gruplandırma ve giriş kümesinin sonuçlarını ilişkilendirmeniz gerekir. Aşağıdaki iki sorgu eşdeğerdir:

SELECT p, (SELECT q FROM GroupPartition(ol.Quantity) AS q) FROM LOB.OrderLines AS ol GROUP BY ol.Product AS p
SELECT p, (SELECT ol.Quantity AS q FROM LOB.OrderLines AS ol2 WHERE ol2.Product = p) FROM LOB.OrderLines AS ol GROUP BY ol.Product AS p

Örnekte görüldüğü gibi GROUPPARTITION toplama işleci gruplandırma sonrasında giriş kümesine başvuru almayı kolaylaştırır.

GROUPPARTITION işleci, parametresini kullandığınızda expression işleç girişindeki herhangi bir Entity SQL ifadesini belirtebilir.

Örneğin, grup bölümüne yönelik aşağıdaki giriş ifadelerinin tümü geçerlidir:

SELECT groupkey, GroupPartition(b) FROM {1,2,3} AS a INNER JOIN {4,5,6} AS b ON true GROUP BY a AS groupkey
SELECT groupkey, GroupPartition(1) FROM {1,2,3} AS a INNER JOIN {4,5,6} AS b ON true GROUP BY a AS groupkey
SELECT groupkey, GroupPartition(a + b) FROM {1,2,3} AS a INNER JOIN {4,5,6} AS b ON true GROUP BY a AS groupkey
SELECT groupkey, GroupPartition({a + b}) FROM {1,2,3} AS a INNER JOIN {4,5,6} AS b ON true GROUP BY a AS groupkey
SELECT groupkey, GroupPartition({42}) FROM {1,2,3} AS a INNER JOIN {4,5,6} AS b ON true GROUP BY a AS groupkey
SELECT groupkey, GroupPartition(b > a) FROM {1,2,3} AS a INNER JOIN {4,5,6} AS b ON true GROUP BY a AS groupkey

Örnek

Aşağıdaki örnekte GROUPPARTITION yan tümcesinin GROUP BY yan tümcesiyle nasıl kullanılacağı gösterilmektedir. GROUP BY yan tümcesi varlıklarına göre gruplandırmaSalesOrderHeader.Contact GROUPPARTITION yan tümcesi daha sonra her grubun özelliğini projelendirerek TotalDue bir ondalık koleksiyonu elde eder.

USING Microsoft.Samples.Entity
Function MyAvg(dues Collection(Decimal)) AS
(
    Avg(SELECT value due FROM dues AS due WHERE due > @price)
)
SELECT TOP(10) contactID, MyAvg(GroupPartition(order.TotalDue)) 
FROM AdventureWorksEntities.SalesOrderHeaders AS order 
GROUP BY order.Contact.ContactID AS contactID;