CREATE TABLE tabla
(nombre VARCHAR2(100),
puesto VARCHAR2(100),
cantidad NUMBER);
INSERT INTO tabla (cantidad, nombre, puesto) VALUES (1, 'Luis', 'Puesto 1');
INSERT INTO tabla (cantidad, nombre, puesto) VALUES (1, 'Carlos', 'Puesto 2');
INSERT INTO tabla (cantidad, nombre, puesto) VALUES (2, 'Elena', 'Puesto 1');
INSERT INTO tabla (cantidad, nombre, puesto) VALUES (NULL, 'Luisa', 'Puesto 2');
INSERT INTO tabla (cantidad, nombre, puesto) VALUES (NULL, 'Jacobo', 'Puesto 1');
INSERT INTO tabla (cantidad, nombre, puesto) VALUES (1, 'Carmen', 'Puesto 2');
INSERT INTO tabla (cantidad, nombre, puesto) VALUES (2, 'Mercedes', 'Puesto 1');
INSERT INTO tabla (cantidad, nombre, puesto) VALUES (1, 'Pepe', 'Puesto 2');
INSERT INTO tabla (cantidad, nombre, puesto) VALUES (1, 'Amelia', 'Puesto 1');
INSERT INTO tabla (cantidad, nombre, puesto) VALUES (3, 'Jose', 'Puesto 3');
commit;
Se puede sacar la lista de nombres por puesto y hacer la suma de la cantidad con:
SELECT LISTAGG(nombre||' '||cantidad, '; ') WITHIN GROUP (ORDER BY nombre) LISTA_NOMBRES,
SUM(t.cantidad) SUMA_CANT,
COUNT(1) CUENTA
FROM tabla t
group by puesto
ORDER BY 2 desc,3 desc;