PUERTA | PUERTA CS 2012 | Pregunta 15

¿Cuáles de las siguientes afirmaciones son VERDADERAS acerca de una consulta SQL?
P: Una consulta SQL puede contener una cláusula HAVING incluso si no tiene una cláusula GROUP BY
Q: Una consulta SQL puede contener una cláusula HAVING solo si tiene una cláusula GROUP BY
R: Todos los atributos utilizados en la cláusula GROUP BY deben aparecer en la cláusula SELECT
S: No todos los atributos utilizados en la cláusula GROUP BY deben aparecer en la cláusula SELECT

(A) P y R
(B) P y S
(C) Q y R
(D) Q y S

Respuesta: (B)
Explicación: Según el estándar SQL, la respuesta debe ser la opción (C), que es la clave de respuesta dada por la autoridad GATE .

Si hablamos de diferentes implementaciones de SQL como MySQL, entonces la opción (B) también es correcta. Pero en cuestión, parecen estar hablando de SQL estándar, no de implementación. Por ejemplo a continuación hay un

P es correcta en la mayoría de las implementaciones. La cláusula HAVING también se puede usar con la función agregada. Si usamos una cláusula HAVING sin una cláusula GROUP BY, la condición HAVING se aplica a todas las filas que satisfacen la condición de búsqueda. En otras palabras, todas las filas que cumplen la condición de búsqueda forman un solo grupo. Vea esto para más detalles.

S es correcto. Para verificar S, intente seguir las consultas en SQL.

CREATE TABLE temp 
  ( 
     id   INT, 
     name VARCHAR(100) 
  ); 

INSERT INTO temp VALUES (1, "abc"); 
INSERT INTO temp VALUES (2, "abc"); 
INSERT INTO temp VALUES (3, "bcd"); 
INSERT INTO temp VALUES (4, "cde"); 

SELECT Count(*) 
FROM   temp 
GROUP  BY name; 

Producción:

count(*)
--------
2
1
1

Manera alternativa –

La declaración (P) «Una consulta SQL puede contener una cláusula HAVING incluso si no tiene una cláusula GROUP BY» es correcta porque el término Have se aplica después de la fase de agregación y debe usarse si desea filtrar los resultados agregados y Have no. No requiere la cláusula Group By. Una cláusula HAVING sin una cláusula GROUP BY es una sintaxis válida y (posiblemente) útil en SQL estándar. Considere este ejemplo, que es SQL estándar válido:

 SELECT 'T' AS result
   FROM Book
 HAVING MIN(NumberOfPages) < MAX(NumberOfPages);

La declaración (S) «No todos los atributos usados ​​en la cláusula GROUP BY deben aparecer en la cláusula SELECT» es correcta, pero si usamos la cláusula Group By, hay limitaciones sobre lo que podemos poner en la cláusula Select.

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *