resueltos - numero de empleados por departamento sql
solución de mitad de período alrededor de consulta en SQL (1)
1) Sí. El grupo por aparece en la sub-selección
(
select w.essn
from works_on w
group by w.essn
having count(*) >= 2
)
y solo es efectivo allí.
2) "como" crea un alias, en este caso "e" para "empleado". Esto le permite evitar la tediosidad de escribir empleados en todas partes. Algunas bases de datos SQL no requieren el "como", pero en general es una buena idea, ya que deja clara su intención.
3) "Tener" es como un "Dónde" que opera en cada miembro de un grupo por cláusula. https://en.wikipedia.org/wiki/Having_%28SQL%29
Esta es la base de datos:
EMPLOYEE (fmane, minit, lname, ssn, birthdate, address, sex, salary, superssn, dno) KEY: ssn
DEPARTMENT (dname, dnumber, mgrssn, mgrstartdate) KEY: dnumber.
PROJECT (pname, pnumber, plocation, dnum) KEY: pnumber.
WORKS_ON (essn, pno, hours) KEY: (essn, pno)
DEPENDENT (essn, dependent-name, sex, bdate, relationship) KEY: (essn, dependent-name)
La pregunta que se hace es ...
Indique el apellido y el SSN de los empleados solteros que trabajan en dos o más proyectos.
SELECT e.Lname, e.ssn
FROM Employee AS e
WHERE e.ssn IN (
SELECT w.essn
FROM works_on w
GROUP BY w.essn
HAVING count(*) >= 2
)
AND e.ssn NOT IN (
SELECT essn
FROM dependent
WHERE relationship = ''Spouse''
);
Mi respuesta fue incorrecta porque no e.ssn NOT IN
cláusula e.ssn NOT IN
.
Mis preguntas son:
1) ¿Para qué se utiliza el group by
? estrictamente para obras solo?
2) En relación con FROM Employee AS e
, ¿es AS
un error tipográfico o un comando?
3) ¿Significa incluir? ¿Puede ser reemplazado por algún otro comando?