Aracılığıyla paylaş


GROUP BY (Entity SQL)

Sorgu (SELECT) ifadesi tarafından döndürülen nesnelerin yerleştirileceği grupları belirtir.

Söz dizimi

[ GROUP BY aliasedExpression [ ,...n ] ]

Bağımsız değişkenler

aliasedExpression Gruplandırma gerçekleştirilen geçerli sorgu ifadeleri. expression from yan tümcesi tarafından döndürülen bir özelliğe başvuran bir özellik veya toplama olmayan bir ifade olabilir. GROUP BY yan tümcesindeki her ifade, eşitlik için karşılaştırılabilir bir tür olarak değerlendirilmelidir. Bu türler genellikle sayılar, dizeler ve tarihler gibi skaler temel öğelerdir. Bir koleksiyona göre gruplandıramazsınız.

Açıklamalar

Toplama işlevleri SELECT yan tümcesi <seçme listesine> dahil edilirse, GROUP BY her grup için bir özet değeri hesaplar. GROUP BY belirtildiğinde, seçme listesindeki herhangi bir nonaggregate ifadesindeki her özellik adı GROUP BY listesine eklenmelidir veya GROUP BY ifadesi seçme listesi ifadesiyle tam olarak eşleşmelidir.

Not

ORDER BY yan tümcesi belirtilmezse, GROUP BY yan tümcesi tarafından döndürülen gruplar belirli bir sırada değildir. Verilerin belirli bir sıralamasını belirtmek için her zaman ORDER BY yan tümcesini kullanmanızı öneririz.

Group BY yan tümcesi açıkça veya örtük olarak belirtildiğinde (örneğin, sorgudaki HAVING yan tümcesi tarafından), geçerli kapsam gizlenir ve yeni bir kapsam kullanıma sunulmuştur.

SELECT yan tümcesi, HAVING yan tümcesi ve ORDER BY yan tümcesi artık FROM yan tümcesinde belirtilen öğe adlarına başvuramaz. Gruplandırma ifadelerine yalnızca kendileri başvurabilirsiniz. Bunu yapmak için her gruplandırma ifadesine yeni adlar (diğer adlar) atayabilirsiniz. Gruplandırma ifadesi için bir diğer ad belirtilmezse, Entity SQL aşağıdaki örnekte gösterildiği gibi diğer ad oluşturma kurallarını kullanarak bir diğer ad oluşturmaya çalışır.

SELECT g1, g2, ...gn FROM c as c1

GROUP BY e1 as g1, e2 as g2, ...en as gn

GROUP BY yan tümcesindeki ifadeler, aynı GROUP BY yan tümcesinde daha önce tanımlanan adlara başvuramaz.

Adları gruplandırmaya ek olarak, SELECT yan tümcesi, HAVING yan tümcesi ve ORDER BY yan tümcesinde toplamaları da belirtebilirsiniz. Toplama, grubun her öğesi için değerlendirilen bir ifade içerir. Toplama işleci tüm bu ifadelerin değerlerini azaltır (genellikle, ancak her zaman değil, tek bir değere). Toplama ifadesi, özgün öğe adlarına yapılan başvuruları üst kapsamda veya GROUP BY yan tümcesi tarafından tanıtılan yeni adlardan herhangi birine görünür yapabilir. Toplamalar SELECT yan tümcesinde, HAVING yan tümcesinde ve ORDER BY yan tümcesinde görünse de, bunlar aslında aşağıdaki örnekte gösterildiği gibi gruplandırma ifadeleriyle aynı kapsam altında değerlendirilir.

SELECT name, sum(o.Price * o.Quantity) as total

FROM orderLines as o

GROUP BY o.Product as name

Bu sorgu, ürüne göre ayrılmış olarak sipariş edilen tüm ürünlerin maliyetinin raporunu oluşturmak için GROUP BY yan tümcesini kullanır. Gruplandırma ifadesinin bir parçası olarak ürüne adı name verir ve select listesinde bu ada başvurur. Ayrıca SELECT listesinde sipariş satırının fiyatına ve miktarına dahili olarak başvuran toplamayı sum belirtir.

Her GROUP By anahtar ifadesinin giriş kapsamına en az bir başvurusu olmalıdır:

SELECT FROM Persons as P
GROUP BY Q + P   -- GOOD
GROUP BY Q   -- BAD
GROUP BY 1   -- BAD, a constant is not allowed

GROUP BY kullanma örneği için bkz . HAVING.

Örnek

Aşağıdaki Entity SQL sorgusu, bir sorgu tarafından nesnelerin döndürüldiği grupları belirtmek için GROUP BY işlecini kullanır. Sorgu AdventureWorks Satış Modeli'ni temel alır. Bu sorguyu derlemek ve çalıştırmak için şu adımları izleyin:

  1. Nasıl yapılır: PrimitiveType Sonuçları Döndüren Bir Sorgu Yürütme bölümündeki yordamı izleyin.

  2. Aşağıdaki sorguyu yöntemine ExecutePrimitiveTypeQuery bağımsız değişken olarak geçirin:

SELECT VALUE name FROM AdventureWorksEntities.Products 
    AS P GROUP BY P.Name HAVING MAX(P.ListPrice) > @price

Ayrıca bkz.