Ir al contenido principal

TIPS: SQL utilizando función max()


Este sitio tiene como finalidad acoger y ayudar a los múltiples usuarios que lo visitan, hoy las consultas han estado dirigidas en el ámbito de las bases de datos, más especificamente, las sentencias SQL.

Así que comenzamos con una de las preguntas más frecuentes que se ha escuchado hoy: ¿Cómo puedo obtener el valor más grande de un conjunto de datos?.

Para explicar como hacer esto se realizará un pequeño ejemplo que fue probado en postgresql .
Primero se creo una tabla llamada producto (por estándar en el depto. se utilizan nombres en singular) con el siguiente script:

CREATE TABLE producto(
codigo int4 NOT NULL,
cantidad int4 NOT NULL);

INSERT INTO producto(codigo, cantidad) VALUES (10, 30);
INSERT INTO producto(codigo, cantidad) VALUES (20, 50);
INSERT INTO producto(codigo, cantidad) VALUES (30, 39);
INSERT INTO producto(codigo, cantidad) VALUES (10, 40);
INSERT INTO producto(codigo, cantidad) VALUES (10, 70);
INSERT INTO producto(codigo, cantidad) VALUES (10, 10);
INSERT INTO producto(codigo, cantidad) VALUES (20, 35);
INSERT INTO producto(codigo, cantidad) VALUES (30, 34);
INSERT INTO producto(codigo, cantidad) VALUES (10, 37);

Si ejecutamos el comando SELECT * FROM producto; se obtiene:

codigo | cantidad
--------+----------
10 | 30
20 | 50
30 | 39
10 | 40
10 | 70
10 | 10
20 | 35
30 | 34
10 | 37
(9 rows)

En este punto nos podemos hacer la pregunta: ¿Cual es el producto que más se ha vendido y cuanto se vendió (cantidad)?

RESPUESTA PROPUESTA:
a)
SELECT p.codigo, sum(p.cantidad)
FROM producto p
GROUP BY p.codigo
HAVING sum(p.cantidad) >= (SELECT max(maximo.resultado)
FROM (SELECT sum(pp.cantidad) as resultado
FROM producto pp
GROUP BY pp.codigo) maximo);
b)
SELECT p.codigo, sum(p.cantidad)
FROM producto p
GROUP BY p.codigo
HAVING sum(p.cantidad) >= ALL (SELECT sum(pp.cantidad) as resultado
FROM producto pp
GROUP BY pp.codigo);


El resultado obtenido es:

codigo | sum
--------+-----
10 | 187
(1 row)

Esperamos que les sea de utilidad, como la respuesta no es única esperamos comentarios. Saludos.

Loreto Telgie, Juan Bekios

Comentarios

Entradas más populares de este blog

TIPS: Tres algoritmos para convertir una imagen de color a gris en python

Hace un tiempo necesitaba convertir unas imágenes que estaban en color a escalas de grises utilizando python. Buscando en internet encontré un sitio donde explicaban las fórmulas que se utilizan en el GIMP para realizar la conversión.

CIMM Modelo de capacidad inmadura

En el marco de la calidad de software existen diversas normas o enfoques de implantación, tales como ISO9001, CMM, SIX-SIXMA que clasifican de alguna forma a las organizaciones. Por ejemplo: Hoy se plantea que existen otro tipo de organizaciones que escapan a estas clasificaciones. CIMM (The Capability Im-Maturity Model) describe que hay organizaciones que no han alcanzado ni siquiera el primer nivel de CMM. CIMM fue desarrollado por Anthony Finkelstein, profesor de UCL, University College London, en el que propuso que existen niveles negativos de madurez. Posteriormente este modelo fue refinado por Tom Schorsch, estudiante de doctorado de jornada completa del Instituto de Tecnología de la fuerza aérea de los Estados Unidos en la Base aérea WrightPatterson, Ohio. Niveles de CIMM 0.Negligente -1.Obstructivo -2.Despectivo -3.Sabotage El nivel 0 se refiere a las organizaciones negligentes. Éstas impiden cualquier desarrollo de software exitoso. Su gran, y a veces única, preocupación es la...

Al fin comenzamos...

Después de muchas y muchas reuniones de buena fe, finalmente nos hemos juntado para iniciar las primeras actividades de grupo de "Taller de Ingeniería de Software": Entre las actividades desarrolladas hoy: Conversamos. Instalamos fedora core 4 en el PC. Creamos nuestro blog. Y esperamos hacer el modelo de base de datos e instalar postgres. Nuestras actividades se desarrollan en el laboratorio de cliente/servidor, Universidad Católica del Norte . Y nuestras reuniones son los días martes desde las 11:45 hasta las 13:00 y los viernes desde las 18:00hrs.