una - Obtención de un promedio de valores de subconsulta u otra función agregada en SQL Server
subconsultas sql pdf (6)
Tengo la sentencia SQL (SQL Server)
SELECT
COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate)<7
GROUP BY
dateadd(dd,0, datediff(dd,0,CreationDate))
que produce la salida
pageCount
27
19
59
Ahora me gustaría obtener el promedio de todas esas cifras utilizando SQL. Aparentemente funciones agregadas anidadas como
(AVG (COUNT (pageCount)))
no están permitidos, y usar una subconsulta como
SELECT AVG(pageCount) FROM
(
SELECT
COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate)<7
GROUP BY
dateadd(dd,0, datediff(dd,0,CreationDate))
)
me da solo un mensaje de error Sintaxis incorrecta cerca de '')''.
¿Cómo puedo obtener el promedio de las filas de pageCount?
** Si desea calcular el promedio de dos diferentes mediante el procedimiento **
paso 1: seleccione la primera columna de la tabla ut11
paso2: selecciona la segunda columna de la tabla ut12
paso 3: usando unir a la izquierda unir a esta tabla
paso 4: ((t1.ut_1 + t2.ut_2) / 2) como promedio de cálculo promedio
SELECT t1.ut_1
,t2.ut_2
,((t1.ut_1 + t2.ut_2)/2) AS total
FROM ut11 AS t1
LEFT JOIN ut12 AS t2 ON t1.roll_no = t2.roll_no
WHERE t1.roll_no= rno
Añadir un alias de subconsulta
SELECT AVG(pageCount)
FROM (SELECT COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1
AND DATEPART(dw,CreationDate) {Missing stuff here } ) AS Z
En primer lugar, debe agregar la condición al final de la consulta. Por ejemplo:
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate) < 10
2º, no cerraste tu bracket al final. En tercer lugar, tienes que nombrar tu consulta interna.
Esto debería funcionar
SELECT AVG(pageCount) FROM
(
SELECT
COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate) < 10
) myInnerTable
No puedo ver tu consulta completa, ya que no parece que se haya publicado correctamente.
Sin embargo, creo que su problema es simplemente la falta de un nombre para la subconsulta de tabla / anidada derivada.
Déle un alias, como MyTable en este ejemplo
SELECT
AVG(pageCount)
FROM
(
SELECT
COUNT(ActionName) AS pageCount
FROM
tbl_22_Benchmark
) MyTable
Tu subconsulta debe tener un alias, como en este
SELECT AVG(pageCount) FROM
(
SELECT
COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate)<7
GROUP BY
dateadd(dd,0, datediff(dd,0,CreationDate))
) AS t
en tu segundo intento faltas a) y un alias:
SELECT AVG(pageCount) as AvgPageCount FROM
(
SELECT
COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate)
) t