Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A <expression> nem összesítő kifejezés olyan oszlopokon alapul, amelyek nem vesznek részt a GROUP BY záradékban.
Adja hozzá az oszlopokat vagy a kifejezést a GROUP BY-hoz, összesítse a kifejezést, vagy használja a <expressionAnyValue>-et, ha nem számít, hogy a csoporton belüli értékek közül melyik lesz visszaadva.
Paraméterek
-
kifejezés: Nem összesítő, nem csoportosítási kifejezés a
SELECTlistában. -
expressionAnyValue:
expressionaz any_value() aggregált függvénybe burkolva.
Magyarázat
Egy GROUP BY záradékkal rendelkező lekérdezés kontextusában a SELECT lista helyi oszlophivatkozásainak a következőnek kell lenniük:
- Egy összesítő függvény argumentumaként, vagy
- Egy kifejezés része, amely megfelel a
GROUP BYzáradékban szereplő kifejezésnek.
A helyi oszlopreferencia olyan oszlop, amely a lekérdezés FROM záradékában szereplő táblahivatkozásra feloldásra került.
Más szóval: Az oszlop hivatkozásoknak vagy a csoportosítási kulcsok részét kell képezniük, vagy az összesítés részét kell képezniük.
Az Azure Databricks legjobb erőfeszítésselkifejezéseket egyezik: például felismeri: SELECT c1 + 5 FROM T GROUP BY 5 + c1 matematikai kifejezésként.
De SELECT c1 FROM T GROUP BY c1 + 5 nem egyezik.
Mérséklés
A hiba elhárítása az októl függ:
Kihagyott egy csoportosítási oszlopot?
Adjon hozzá
expression, vagy adja hozzá aexpressionmegfelelő alkifejezését aGROUP BYzáradékhoz.Az oszlophivatkozás egy
GROUP BYkifejezés része, amely eltér attól aepression-től?Egyezzen a
SELECTlistában szereplő kifejezéssel, vagy egyszerűsítse aGROUP BYkifejezést.Hiányzik az összesítés?
Burkolja be az oszlophivatkozást egy összesítő függvénnyel. Ha csak reprezentatív értéket szeretne a csoportból, használhatja any_value(elnyomás).
Példák
-- 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