Consulta SQL usando la cláusula COUNT y HAVING

Considere una tabla ESTUDIANTE que tiene el siguiente esquema:

STUDENT (Student_id, Student_Name, Address, Marks) 

Student_id es la columna principal de la tabla STUDENT. Primero creemos la estructura de la tabla con el comando CREAR en SQL:

CREATE TABLE STUDENT 
(STUDENT_ID NUMBER (4), 
STUDENT_NAME VARCHAR2 (20), 
ADDRESS VARCHAR2 (20), 
MARKS NUMBER (3), 
PRIMARY KEY (STUDENT_ID));

Ahora, inserte valores en la tabla usando el comando INSERT INTO en SQL:

INSERT INTO STUDENT 
VALUES (100, ‘PUJA’, ’NOIDA’, 10); 

INSERT INTO STUDENT 
VALUES (101, ‘SUDO’, ’PUNE’, 30); 

INSERT INTO STUDENT 
VALUES (102, ‘BHALU’, ’NASHIK’, 40); 

INSERT INTO STUDENT 
VALUES (103, ‘CHETENA’, ’NOIDA’, 20); 

INSERT INTO STUDENT 
VALUES (104, ‘MOMO’, ’NOIDA’, 40);

Ahora muestre el contenido de la tabla ESTUDIANTE:

SELECT * 
FROM STUDENT;
Student_id    Student_Name    Address    Marks
------------------------------------------------
100            PUJA            NOIDA      10
101            SUDO            PUNE       30
102            BHALU           NASHIK     40
103            CHETENA         NOIDA      20
104            MOMO            NOIDA      40

Consulta-1: Imprima las calificaciones y el número de estudiantes que tienen calificaciones superiores a las calificaciones promedio de los estudiantes de la ciudad de NOIDA. Explicación: para obtener las calificaciones promedio de los estudiantes de la ciudad de NOIDA, usamos esta consulta:

SELECT AVG(MARKS) 
FROM STUDENT 
WHERE ADDRESS =’NOIDA’ 

Usamos esta subconsulta anterior usando la cláusula GROUP BY y HAVING:

SELECT MARKS, COUNT (DISTINCT STUDENT_ID) 
FROM STUDENT 
GROUP BY MARKS 
HAVING MARKS > (SELECT AVG(MARKS) 
                   FROM STUDENT 
                   WHERE ADDRESS = ’NOIDA’ ); 

En la consulta anterior usamos GROUP BY MARKS significa que agrupa las filas con las mismas marcas y también usamos SELECT MARKS, COUNT(DISTINCT STUDENT_ID) que imprime las marcas de cada grupo y el recuento de filas de los grupos respectivos, es decir,

MARKS    COUNT
10           1
20           1
30           1
40           2 

Después de eso, usamos HAVING MARKS > (SELECT AVG(MARKS) FROM STUDENT WHERE ADDRESS =’NOIDA’), que se usa para filtrar el resultado con la condición de que las calificaciones deben ser mayores que las calificaciones promedio del estudiante de la ciudad de Noida, es decir, más de

(10+20+40) / 3 
= 23.3 

Producción:

MARKS       COUNT (DISTINCT STUDENT_ID)
30             1
40             2 

Consulta-2: Muestre los nombres y direcciones de los estudiantes cuya segunda letra del nombre es U. Explicación: Para hacer coincidir el patrón del campo STUDENT_NAME, usamos el operador de comparación de strings LIKE con dos caracteres reservados % y _ . % reemplaza un número arbitrario de caracteres y ‘_’ reemplaza un único carácter arbitrario. Aquí, necesitamos comparar la segunda letra de STUDENT_NAME, por lo que usamos el patrón ‘_U%’.

SELECT Student_Name, Address 
FROM STUDENT 
WHERE STUDENT_NAME LIKE ‘_U%’ 

Producción:

STUDENT_NAME  ADDRESS
PUJA            NOIDA
SUDO            PUNE 

Consulta-3: Imprima los detalles del estudiante que obtiene las calificaciones más altas (si hay más de un estudiante que obtiene las calificaciones más altas, las más altas serán de acuerdo con el orden alfabético de sus nombres). Explicación: Para obtener las calificaciones más altas del campo MARCAS, usamos el comando MAX, es decir,

SELECT MAX(MARKS) 
FROM STUDENT; 

Usamos la subconsulta anterior que devuelve ’40’ y se usará con el comando WHERE. Para organizar según el orden alfabético del campo STUDENT_NAME, usamos la cláusula ORDER BY y para obtener la fila superior, se usará LIMIT 1. Combinando todo esto:

SELECT * 
FROM STUDENT 
WHERE MARKS = (SELECT MAX (MARKS) 
               FROM STUDENT) 
ORDER BY STUDENT_NAME LIMIT 1;  

Producción:

Student_id    Student_Name    Address     Marks
102            BHALU            NASHIK     40 

Consulta-4: Cambiar el nombre y la dirección del estudiante con ID 103 a RITA y DELHI respectivamente. Explicación: Para cambiar el valor de cualquier atributo, usaremos el comando ACTUALIZAR con la cláusula SET para especificar sus nuevos valores.

UPDATE STUDENT 
SET STUDENT_NAME = ’RITA’, ADDRESS=’DELHI’ 
WHERE STUDENT_ID=103 ; 

Producción:

1 row updated 

Para ver los cambios que usaremos,

SELECT * 
FROM STUDENT; 

Producción:

Student_id    Student_Name    Address      Marks
100            PUJA               NOIDA       10
101            SUDO               PUNE        30
102            BHALU              NASHIK      40
103            RITA               DELHI       20
104            MOMO               NOIDA       40 

Consulta-5: ELIMINAR los detalles de la tabla ESTUDIANTE que obtienen la calificación más baja. Explicación: Para encontrar la nota más baja que usaremos,

SELECT MIN(MARKS) 
FROM STUDENT; 

Devolverá ’10’ como las marcas más bajas. Para eliminar filas, usaremos el comando DELETE con el comando WHERE para especificar la condición.

DELETE FROM STUDENT 
WHERE MARKS = (SELECT MIN(MARKS) 
               FROM STUDENT); 

Producción:

1 row affected 

Para ver los cambios que usaremos,

SELECT * 
FROM STUDENT; 

Producción:

Student_id    Student_Name    Address      Marks
101            SUDO               PUNE        30
102            BHALU              NASHIK      40
103            RITA               DELHI       20
104            MOMO               NOIDA       40 

Publicación traducida automáticamente

Artículo escrito por SUDIPTADANDAPAT 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 *