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.
Toplama olmayan ifade <expression>, GROUP BY yan tümcesine katılmayan sütunları temel alır.
Sütunları veya ifadeyi GROUP BY'a ekleyin, ifadeyi toplayın veya bir grup içindeki değerlerden hangisinin döneceği önemli değilse <expressionAnyValue> kullanın.
Parametreler
-
ifade:
SELECTlistesinde toplama yapmayan ve gruplandırmayan bir ifade. -
expressionAnyValue: any_value() toplama işlevinde sarmalanmış
expression.
Açıklama
GROUP BY yan tümcesine sahip bir sorgu bağlamında, SELECT listesindeki yerel sütun başvuruları şu kurallara uymalıdır:
- veyabir
toplama işlevi için bağımsız değişken olarak kullanılır -
GROUP BYyan tümcesindeki bir ifadeyle eşleşen bir ifadenin parçası olan bir kısım.
Yerel sütun başvurusu, sorgunun FROM yan tümcesindeki bir tablo başvurusuna çözümlenmiş bir sütundur.
Başka bir deyişle: Sütun referansları, gruplama anahtarlarının bir parçası olmalı veya toplamanın bir parçası olmalıdır.
Azure Databricks,en iyi SELECT c1 FROM T GROUP BY c1 + 5 eşleşmez.
Azaltma
Hatanın azaltılması nedene bağlıdır:
Gruplandırma için bir sütunu kaçırdınız mı?
expressionyan tümcesineexpression'i veyaGROUP BY'in ilgili alt ifadesini ekleyin.Bir
GROUP BYifadesinin parçası olan sütun referansıepression'den farklı mı?SELECTlistesindeki ifadeyi eşleştirin veyaGROUP BYifadesini basitleştirin.Toplamayı kaçırıyor musunuz?
Sütun başvuruyu bir toplama işleviyle sarmalar. Gruptan yalnızca temsili bir değer istiyorsanız,
any_value(epression) kullanabilirsiniz.
Örnekler
-- Sample data
> CREATE OR REPLACE TEMPORARY VIEW tasks(name, firstname, task, cost) AS
VALUES ('Smith' , 'Sam' , 'UNPIVOT', 10),
('Smith' , 'Sam' , 'LATERAL', 5),
('Shuster', 'Sally' , 'DELETE' , 7),
('Shuster', 'Sally' , 'GRANT' , 8);
-- `name` and `firstname` are part of the group by coumns, but incomplete
> SELECT name, firstname, sum(cost) FROM tasks GROUP BY firstname || ' ' || name;
[MISSING_AGGREGATION] The expression "name" is neither present in the group by, nor is it an aggregate function.
-- Match the GROUP BY expression
> SELECT firstname || ' ' || name, sum(cost) FROM tasks GROUP BY firstname || ' ' || name;
Sam Smith 15
Sally Shuster 15
-- Break up the GROUP BY expression
> SELECT firstname, name, sum(cost) FROM tasks GROUP BY firstname, name;
Sam Smith 15
Sally Shuster 15
-- Missing grouping column
> SELECT name, firstname, sum(cost) FROM tasks GROUP BY name;
[MISSING_AGGREGATION] The expression "firstname" is neither present in the group by, nor is it an aggregate function.
-- Add the grouping column
> SELECT firstname, name, sum(cost) FROM tasks GROUP BY firstname, name;
Sam Smith 15
Sally Shuster 15
-- Missing aggregate
> SELECT firstname, name, sum(cost), task FROM tasks GROUP BY firstname, name;
[MISSING_AGGREGATION] The expression "task" is neither present in the group by, nor is it an aggregate function.
-- Add an aggregate
> SELECT firstname, name, sum(cost), array_agg(task) FROM tasks GROUP BY firstname, name;
Sam Smith 15 ["UNPIVOT","LATERAL"]
Sally Shuster 15 ["DELETE","GRANT"]
-- Return any task
> SELECT firstname, name, sum(cost), any_value(task) FROM tasks GROUP BY firstname, name;
Sam Smith 15 LATERAL
Sally Shuster 15 DELETE