varios una tipos subconsultas subconsulta resueltos que promedio ejercicios ejemplo datos campos anidadas sql sql-server tsql

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