Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[PEDIDO] [Gestion de Datos] Final 04/12/2012
Autor Mensaje
Nacho14 Sin conexión
Profesor del Modulo A
-
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 295
Agradecimientos dados: 36
Agradecimientos: 50 en 36 posts
Registro en: Aug 2009
Mensaje: #16
RE: [PEDIDO] [Gestion de Datos] Final 04/12/2012
(28-02-2015 22:50)Fly escribió:  3b)
Estuve probando toooodas las opciones que mandaron acá... Les digo que tal:

- El de leofeuer está MAL, me devuelve NULL
- El de Martinrg también está mal... muy mal!!!! Me tira errores por todos lados.
- El de chacho está bien planteado PERO había algo mal con los isnull... acá les tiro la correción:



select c.nombre
from Examen_Clientes c
inner join Examen_Facturas f2010 on c.id_cliente = f2010.f_cliente
and YEAR(f2010.fecha) = 2010
inner join Examen_Facturas f2009 on c.id_cliente = f2009.f_cliente
and YEAR(f2009.fecha) = 2009
group by c.nombre
having SUM(isnull(f2010.importe,0)) > SUM(isnull(f2009.importe,0))
order by 1



- El de Aoshido está bien planteado PERO la pifió con los alias, y faltó el order by... acá lo corregí:



select
c.nombre
from
Examen_Clientes c
join Examen_Facturas f09 on f09.f_cliente = c.id_cliente and year(f09.fecha) = 2009
join Examen_Facturas f10 on f10.f_cliente = c.id_cliente and year(f10.fecha) = 2010
group by c.nombre
having sum(f10.importe) > sum(f09.importe)
order by 1



- ... y finalmente les tiro MI versión, es la que me gusta más porque la hice yo =P (y porque además no necesité de un GROUP BY)


SELECT c.nombre
FROM dbo.Examen_Clientes c
WHERE ( SELECT SUM(f2.importe)
FROM Examen_Facturas f2
WHERE f2.f_cliente = c.id_cliente
AND YEAR(f2.fecha) = 2010
)
>
( SELECT SUM(f3.importe)
FROM Examen_Facturas f3
WHERE f3.f_cliente = c.id_cliente
AND YEAR(f3.fecha) = 2009
)
ORDER BY 1



Saludos!


A simple vista parece ideal la última opción
01-03-2015 14:16
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Nacho14 recibio 2 Gracias por este post
agusbrand (03-03-2015), Fly (30-11-2015)
H3rnst Sin conexión
Secretario de la SAE
Overlord
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 647
Agradecimientos dados: 246
Agradecimientos: 117 en 50 posts
Registro en: Sep 2010
Mensaje: #17
RE: [PEDIDO] [Gestion de Datos] Final 04/12/2012
Rescato este thread de la muerte para aportar mi solución al 3b. Si les parece que está mal avisen porfa



SELECT c.nombre
FROM Clientes c
INNER JOIN Facturas f ON f.f_cliente = c.id_cliente
WHERE SUM(CASE WHEN f.Fecha BETWEEN '20100101' AND '20101231') > SUM(CASE WHEN f.Fecha BETWEEN '20090101' AND '20091231')
AND SUM(CASE WHEN f.Fecha BETWEEN '20100101' AND '20101231') > 0
GROUP BY c.nombre
ORDER BY c.nombre ASC


30-11-2015 11:25
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.356
Agradecimientos dados: 900
Agradecimientos: 889 en 356 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #18
RE: [PEDIDO] [Gestion de Datos] Final 04/12/2012
H3rnst perdon mi mala memoria pero eso funciona? Lo probaste?

Que yo recuerde las funciones de agregación como el Sum no se podían usar en el Where, porque aun no está agregado.

No deberías usarlo en el having, por ejemplo ?

[Imagen: v34BEFt.gif]
30-11-2015 13:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] gonnza recibio 1 Gracias por este post
H3rnst (30-11-2015)
H3rnst Sin conexión
Secretario de la SAE
Overlord
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 647
Agradecimientos dados: 246
Agradecimientos: 117 en 50 posts
Registro en: Sep 2010
Mensaje: #19
RE: [PEDIDO] [Gestion de Datos] Final 04/12/2012
(30-11-2015 13:58)gonnza escribió:  H3rnst perdon mi mala memoria pero eso funciona? Lo probaste?

Que yo recuerde las funciones de agregación como el Sum no se podían usar en el Where, porque aun no está agregado.

No deberías usarlo en el having, por ejemplo ?

Tenés razón, acá encontré una respuesta en SO para un ejemplo parecido.
Gracias!
30-11-2015 19:51
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
felire Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 22
Agradecimientos dados: 1
Agradecimientos: 19 en 1 posts
Registro en: Dec 2013
Mensaje: #20
RE: [PEDIDO] [Gestion de Datos] Final 04/12/2012
Esto deberia funcionar:

SELECT C.Id
FROM CLIENTES C JOIN FACTURAS F ON (F.cliente = C.Id)
WHERE
EXISTS (SELECT 1 FROM FACTURAS F
WHERE C.Id = F.cliente AND YEAR(Fecha) = 2009
)
AND F.Fecha = 2010
GROUP BY C.Id
HAVING
SUM(F.Importe) >= (SELECT SUM(Importe) FROM FACTURAS F WHERE F.cliente = C.Id)
06-12-2016 00:15
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
chdonof Sin conexión
Empleado del buffet
FINAL DE ADR
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 19
Agradecimientos dados: 5
Agradecimientos: 13 en 7 posts
Registro en: Dec 2013
Mensaje: #21
RE: [PEDIDO] [Gestion de Datos] Final 04/12/2012
coincido con el ultimo post... pero le faltaria el año 2009 en el having

SELECT C.Nombre
FROM CLIENTES C JOIN FACTURAS F ON (F.cliente = C.Id)
WHERE
YEAR(Fecha) = 2010
GROUP BY C.nombre
HAVING
SUM(F.Importe) >= (SELECT SUM(Importe) FROM FACTURAS F WHERE F.cliente = C.Id and YEAR(Fecha) = 2009 )
and (SELECT SUM(Importe) FROM FACTURAS F WHERE F.cliente = C.Id and YEAR(Fecha) = 2009 ) > 0
order by C.Nombre


o asi

SELECT C.Nombre
FROM CLIENTES C JOIN FACTURAS F ON (F.cliente = C.Id)
WHERE
YEAR(Fecha) = 2010 AND
EXISTS (SELECT 1 FROM FACTURAS F2
WHERE C.Id = F2.cliente AND YEAR(Fecha) = 2009)
GROUP BY C.nombre
HAVING
SUM(F.Importe) >= (SELECT SUM(Importe) FROM FACTURAS F WHERE F.cliente = C.Id and YEAR(Fecha) = 2009 )
order by C.Nombre
04-02-2017 18:40
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 10 invitado(s)