Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Consultas Basicas

Estas en el tema de Consultas Basicas en el foro de Oracle en Foros del Web. Buen Dia, soy nuevo en el foro y nuevo en el manejo de oracle, empece este año a trabajar el oracle en mi instituto y ...
  #1 (permalink)  
Antiguo 29/05/2012, 22:17
 
Fecha de Ingreso: mayo-2012
Mensajes: 4
Antigüedad: 12 años, 5 meses
Puntos: 0
Consultas Basicas

Buen Dia, soy nuevo en el foro y nuevo en el manejo de oracle, empece este año a trabajar el oracle en mi instituto y tengo un trabajo de alrededor de 40 consultas sobre una script. ya realize muchas pero estas 4 no las entiendo.

6. Calcula cuantos meses han transcurrido desde la ultima vez que compro el cliente, listando cedula, nombre, fecha ultima compra y meses transcurridos.
7. Listar el nit del proveedor, el nombre del proveedor las ventas totales realizadas y el promedio de las misma de forma mensual durante el primer semestre del año 2005.
8. Quiero sacar un listado del nombre del producto, la cantidad vendida, redondeado al mayor inmediato , y el total de venta, truncando a dos(2) decimales, de los productos del proveedor DISTRIBUIDORA GALVIS CASTILLO, donde el total de las ventas sean mayores a 10000 (diez mil)
10. Listar la cedula y nombre, extensión del nombre menor a veinte(20) caracteres, del cliente así como su total de compra durante el año 2006, de aquellos que tuviesen un total de compra mayor a 300000.
  #2 (permalink)  
Antiguo 30/05/2012, 07:56
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Consultas Basicas

Hola elreyes:

Veo que es tu primer post en el foro así es que antes que nada Bienvenido. Antes de ir a la respuesta te recuerdo que hay algunas reglas en el foro que debes considerar.

Primero. Aquí no hacemos el trabajo de otros. Cada que publiques una pregunta es conveniente que nos digas qué es lo que haz tratado de hacer, para así ayudarte a corregir lo que tienes o indicarte alguna mejor opción para resolver el problema.

Segundo. No somos adivinos. Es necesario que des información acerca de tus tablas y datos, pues el problema puede estar justamente en las estructuras de las tablas o en cómo almacenas la información. Siempre publica qué tablas usas, cuál es su estructura y pon algunos datos de ejemplo.

Tercero: trata de ser breve y conciso. parece contradictorio con lo que pongo en el punto anterior, pero a lo que me refiero es que trates un problema a la vez. En tu post estás colocando 4 consultas diferentes donde cada una se resuelve de manera completamente distinta, por lo tanto los posts pueden extenderse demasiado.

Después de esto pasemos a tus consultas.

6. para obtener la última compra utiliza MAX(fecha) agrupando por id_cliente e investiga la función MONTHS_BETWEEN para obtener el número de meses transcurridos.

7. para el promedio de ventas utiliza la función de agrupación AVG, para agrupar por el mes de venta utiliza la función EXTRACT

Código SQL:
Ver original
  1. SELECT EXTRACT(MONTH FROM sysdate) FROM dual;

8. utiliza la función ROUND para el redondeo, para filtrar por el total de ventas deberás agrupar y utilizar la cláusula HAVING

9. para determinar la longitud de una cadena utiliza la función LENGTH

Si continuas con dudas sobre cualquiera de ellas dinos que es lo que haz tratado de hacer y con gusto te ayudamos a completarlas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 30/05/2012, 08:09
 
Fecha de Ingreso: mayo-2012
Mensajes: 4
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Consultas Basicas

Leonardo muchas gracias, intente adjuntar la imagen de mis tablas pero no supe como hacerlo, no se si este permitido insertar un hipervinculo a otro sitio con la imagen. Para la primera consulta habia intentado de esta manera
6. select months_between('2012/05/29','factura.fecha'), max(factura.fecha), cliente.cedula, cliente.nombre
from cliente, factura
where factura.cedula=cliente.cedula
group by cliente.cedula, cliente.nombre;
  #4 (permalink)  
Antiguo 31/05/2012, 10:09
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Consultas Basicas

Hola elreyes:

Como eres novato en el foro no puedes insertar imágenes ni vínculos, pero puedes subir tus imágenes a cualquier host de imágenes gratuito y poner la URL... no aparecerá como vínculo pero los foristas podrán acceder a la imagen copiando y pegando dicho URL.

La consulta que tienes es muy cercana a lo que creo que debes tener, aunque con algunos detalles.

Primero, puedes utulizar la función SYSDATE para obtener la fecha actual:

Segundo, el segundo parámetro de tu función months_between debe ser la fecha Máxima... tal como lo pones ('factura.fecha') en realidad se trata de una cadena, por lo tanto puede marcar error.

Tercero es conveniente utilizar JOIN's en lugar de hacer las uniones explícitas, es decir, en lugar de poner esto:

Código:
FROM tabla1, tabla2
WHERE tabla1.campo = tabla2.campo
Pon esto:

Código:
FROM tabla1
INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
Aunque el resultado es el mismo desde mi punto de vista, la consulta queda más "limpia" y legible... e incluso puede llegar a ser más rápida (por lo menos en otros motores como SQL Server y MySQL si lo es).

De tal manera que la consulta podría quedar así:

Código SQL:
Ver original
  1. SELECT
  2. MONTHS_BETWEEN(SYSDATE, MAX(factura.fecha)),
  3. MAX(factura.fecha), cliente.cedula, cliente.nombre
  4. FROM cliente
  5. INNER JOIN factura ON factura.cedula=cliente.cedula
  6. GROUP BY cliente.cedula, cliente.nombre;

Haz la prueba y nos comentas, si continuas con problemas, pon algunos datos de ejemplo de tus tablas y con gusto te ayudamos a afinar la consulta. igual con el resto de las que están pendientes.

Saludos
Leo.
  #5 (permalink)  
Antiguo 31/05/2012, 13:50
 
Fecha de Ingreso: mayo-2012
Mensajes: 4
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Consultas Basicas

Leo muchas gracias por tu ayuda, funciono perfecto....las demas ya las hice...solo me faltan estas dos pero ni idea como empezar.

1. Si aun cliente se le va ha dar por cada 1000 (mil) pesos un punto por cada compra, listar la cédula del cliente, el nombre del cliente, el total de la compras realizadas y la cantidad de puntos ganadas en el mes de enero de 2005, ordenar por puntos en forma descendente y luego por nombre de cliente en forma ascendente.
2. Quisiera sacar el reporte de las ventas y el valor del iva a pagar agrupados por IVA (16%,10%, etc) del mesde abril de 2006

Esta es la imagen de las tablas http://picturestack.com/493/609/StCSinttuloQz2.jpg

Muchisimas Gracias por tu ayuda, espero aprender mucho de oracle y poder ayudar a mas personas que como yo hasta ahora vamos empezando.

Etiquetas: formulario, basicos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:30.