¿Cómo uso correctamente una función AVG en una declaración de actualización?
-
27-10-2019 - |
Pregunta
Estoy tratando de obtener el promedio de cada miuid insertado en una tabla. Las tablas relevantes y la información de la columna son las siguientes:
Tabla 1. [ID de MIU], Tabla 1. [AVG RSSI
y
Table2.miuid, table2.meannum
Si simplemente estuviera usando una declaración de selección, haría lo siguiente:
Select DISTINCT Table1.[MIU ID], Avg(Table1.[Avg RSSI]) as MeanNum
From Table1
GROUP BY Table1.[MIU ID]
Sin embargo, necesito que esta información se inserta en una columna en la Tabla 2. He probado lo siguiente y variaciones de lo siguiente y los errores que recibo son que no me permitirá usar el grupo, y otro error que dice que Meannum no es parte de la función agregada.
UPDATE Table2
INNER JOIN Table1
ON Table2.MIUID = Table1.[MIU ID]
SET Table2.MeanNum = Avg([Table1].[Avg RSSI]);
Y la otra consulta que he probado es:
UPDATE Table2
SET Table2.MeanNum = Avg([Table1].[Avg RSSI])
WHERE Table2.MIUID = Table1.[MIU ID]
Group By [Table1].[Avg RSSI]
Resumen
Para reiterar todo lo que estoy tratando de hacer es obtener el promedio de la columna AVG RSSI en la Tabla1 para cada ID de MIU distinta e insertar cada valor en la fila apropiada en la Tabla 2.
Nota
Hay una columna en la Tabla2 llamada Avgnum que podría ser promedio para obtener el mismo número que debe entrar en la columna Meannum si usar eso sería más fácil.
Sé cómo hacer lo que estoy tratando de hacer en dos pasos, preferiría poder hacerlo en una declaración SQL.
Solución
Editar: El siguiente código no funcionará en MS-Access/Jet. Ver este enlace:
La operación debe usar una consulta actualizada. (Error 3073) Acceso de Microsoft
Respuesta original:
Puede usar la consulta selecta original en una subconsulta y unirse a ella. No se verifica la sintaxis y estoy más familiarizado con T-SQL que MS-Access, pero algo así como:
UPDATE
t2
SET
t2.MeanNum = sub.MeanNum
From
Table2 t2
INNER JOIN
(
Select DISTINCT
Table1.[MIU ID],
Avg(Table1.[Avg RSSI] as MeanNum
From
Table1
GROUP BY
Table1.[MIU ID]
) sub
ON sub.[MIU ID] = t2.MIUID