BandaAncha.eu

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

expertos en sql, ayuda con una consulta!!!

mercucho1

Estoy intentado hacer una consulta, pero no soy capaz (ni siquiera se si es posible). Tengo dos tablas:

Persona
======
id
nombre
telefono

Proyecto
=========
id
nombre
idpersona
fecha_inicio
fecha_fin

Esto simplemente indica cuando una persona se ha puesto con un proyecto y cuando lo ha acabado (si es que ya lo ha acabado).

El problema es que tengo que hacer una consulta para lo que no estaba preparado el sistema, el numero de personas que se incorporaron en la empresa agrupado por mes y año (casi ná).

La tabla proyecto no estaba diseñada para eso, pero bueno, la menor fecha_inicio coincide con la incorporación en la empresa, con lo que el dato está (aunque si llega a estar en la tabla persona, quitaría muchos quebraderos de cabeza). ¿Se puede hacer esta consulta de alguna forma?

Este tema está cerrado a nuevas respuestas. Abre un nuevo tema para retomar la conversación.
quilloquepasa

¿Con qué aplicación gestionas la base de datos? Lo digo porque más que una consulta, quizás te venga mejor generar un informe agrupado y ordenado por años y meses, cosa que se puede especificar en las propiedades de los campos del propio informe sin necesidad de crear una consulta en sí, de lo contrario sólo se me ocurre una consulta por cada mes de cada año, uff. Seguiré pensando. ;-)

BocaDePez
BocaDePez
SELECT count(DISTINCT Persona.id)

 FROM Proyecto,Persona

 WHERE Proyecto.idpersona = Persona.id

 GROUP BY Proyecto.fecha_inicio

Eso lo que te hará es agrupar por FECHAS DE INICIO. Para ser exactamente segun MES y AÑO entonces se requieren dos cosas:
1) Saber que motor de BBDD estás utilizando para saber que funciones de fecha dispones.
2) Saber que formato de fecha es el campo FECHA_INICIO para poder desglosarlo.

Saludos.

🗨️ 3
BocaDePez
BocaDePez

Se me olvido añadir la FECHA_INICIO en el SELECT:

 SELECT Proyecto.fecha_inicio, count(DISTINCT Persona.id)
🗨️ 2
mercucho1

El motor que uso es SQL Server. Para las fechas, uso year(inicio) y month(inicio).

La consulta que me dices es lo primero que probe, pero no funciona. Ten en cuenta que al agrupar por mes y año, el distinct solo es efectivo para las personas iguales dentro del mismo mes, no en el total.

Creo que para simplificar el asunto, solo se debería usar la tabla proyecto, ya que de la tabla persona no cogemos ningún dato.

🗨️ 1
BocaDePez
BocaDePez

Ok. De todas formas creo que puedes usar la tabla PERSONA, ya que tu realmente quieres clasificar esa tabla (valores no repetidos) segun las fechas de otra tabla.

Prueba con esto:

SELECT count(Persona.id),

 (SELECT concat(year(fecha_inicio),"/",month(fecha_inicio))

 FROM Proyecto

 WHERE Proyecto.idpersona = Persona.id

 ORDER BY fecha_inicio ASC

 LIMIT 1

 ) as FECHA

 FROM Persona

 GROUP BY FECHA

Con eso, teoricamente tendras: ID PERSONA con FECHA DE SU PRIMER PROYECTO (momento del alta en la empresa). Una vez tiene eso, le aplica el GROUP y hace el COUNT.

No se, prueba.