Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Olyan argumentumértékek gyűjteményét adja vissza, amelyek az aktuális csoportpartícióról lesznek kivetítve, amelyhez az összesítés kapcsolódik. Az GroupPartition összesítés csoportalapú összesítés, és nem rendelkezik gyűjteményalapú űrlappal.
Szemantika
GROUPPARTITION( [ALL|DISTINCT] expression )
Érvek
expression Bármely entitás SQL-kifejezése.
Megjegyzések
Az alábbi lekérdezés a termékek listáját és az egyes termékekre vonatkozó rendeléssor-mennyiségek gyűjteményét állítja elő:
SELECT p, GroupPartition(ol.Quantity) FROM LOB.OrderLines AS ol
GROUP BY ol.Product AS p
A következő két lekérdezés szemantikailag egyenlő:
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
Az GROUPPARTITION operátor a felhasználó által definiált összesítő függvényekkel együtt használható.
GROUPPARTITION egy speciális aggregátum-operátor, amely a csoportosított bemeneti készletre mutató hivatkozást tartalmaz. Ez a hivatkozás bárhol használható a lekérdezésben, ahol a GROUP BY hatókörben van. Például:
SELECT p, GroupPartition(ol.Quantity) FROM LOB.OrderLines AS ol GROUP BY ol.Product AS p
Normál GROUP BYesetben a csoportosítás eredményei rejtettek. Az eredményeket csak összesítő függvényben használhatja. A csoportosítás eredményeinek megtekintéséhez össze kell vonnia a csoportosítás és a bemeneti csoport eredményeit egy alquery használatával. A következő két lekérdezés egyenértékű:
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
Ahogy a példában látható, a GROUPPARTITION összesítő operátor megkönnyíti a csoportosítás utáni bemeneti készletre mutató hivatkozás lekérését.
A GROUPPARTITION operátor bármilyen Entity SQL-kifejezést megadhat az operátor bemenetében a expression paraméter használatakor.
Például a csoportpartícióhoz tartozó összes alábbi bemeneti kifejezés érvényes:
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
példa
Az alábbi példa bemutatja, hogyan használható a GROUPPARTITION záradék a GROUP BY záradékkal. A GROUP BY záradék az entitásokat a sajátjuk szerint csoportosítja SalesOrderHeaderContact. A GROUPPARTITION záradék ezután az TotalDue egyes csoportok tulajdonságát jeleníti meg, ami tizedesek gyűjteményét eredményezi.
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;