Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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;