Autor
|
Tema: Corregidme estos ejercicios de sql (Leído 14,119 veces)
|
CrÄsH
Desconectado
Mensajes: 624
========
|
No lo he probado, pero segun veo el codigo, si tienes un codigo A0001 varias veces, este te saldra solo una vez porque los estas agrupando con el GROUP BY El codigo A0001 en teoria solo tendria que existir 1, no crees? quizas me ekivoke ya que el enunciado no es muy claro. aparte de quitar el sum( ) tambien tienes que modificar el GROUP BY que estas utilizando
modificar o eliminar el Group by?? pq si quito la funcion SUM() tb tendre k kitar el group by. por cierto, que gestor de bases utilizas?
oracle
|
|
« Última modificación: 20 Abril 2009, 15:28 pm por CrÄsH »
|
En línea
|
~~~~~~~~~~~~~~~~
|
|
|
sempus
Dakishimetai no ni...
Colaborador
Desconectado
Mensajes: 2.391
GJDAM 愛している
|
El codigo A0001 en teoria solo tendria que existir 1, no crees? quizas me ekivoke ya que el enunciado no es muy claro.
pues esto es lo que yo pienso, no tiene gracia tener mas de una vez el mismo codigo, porque en la venta bastaria con cambiarle la cantidad que esta comprando el cliente pero yo lo dije por esto Las ventas no estan agrupadas, es decir, si el articulo1 se vende 2 veces al cliente1 el mismo dia apareceran dos lineas.
Podria ser que haya hecho dos compras el mismo dia como tu dices,nose si llevas correlativos de factura o si separas las ventas por algun numero correlativo, entonces la venta no seria la misma y por lo tanto deberias ver los datos no agrupados, aunque si es como esta en el ejemplo no hay problema, deseas ver un solo total y no la frecuencia del cliente al comprar. modificar o eliminar el Group by?? pq si quito la funcion SUM() tb tendre k kitar el group by.
puedes agrupar aun si quitas el sum( ), en los primeros post dije que agrupabas si usas un sum( ) , max( ) etc, pero esto es para que la consulta no devuelva error (porque group by es obligatorio ir en esos casos), pero puede darse tambien que tienes datos repetidos (para mi los datos repetidos son todos aquellos que son exactamente iguales) entonces para eliminar los repetidos o para formar un cursor sin datos repetidos tambien puedes hacer uso del group by. por ejemplo, tienes tabla1.nombre +---nombre---+ +---sempus---+ +---sempus---+ +---sempus---+ +---sempus2---+ +---sempus2---+ +---sempus2---+ puedes usar el group by para que el resultado devuelva solo "sempus" y "sempus2" SELECT nombre FROM tabla1 GROUP BY nombre
aunque esto tambien lo podrias hacer con un SELECT nombre DISTINCT FROM tabla1
el caso es que el group by lo puedes usar aun si quitas el sum( ) salu2
|
|
|
En línea
|
...si la tuviera detendría el tiempo para verla como lo hago en este momento y seria feliz eternamente... Descarga openSUSE
|
|
|
CrÄsH
Desconectado
Mensajes: 624
========
|
Como tengo que dejarlo finalmente? Quitando el sum() i como dejo el group by?
Pq el break y el compute sabes si estan bien?
|
|
« Última modificación: 20 Abril 2009, 19:50 pm por CrÄsH »
|
En línea
|
~~~~~~~~~~~~~~~~
|
|
|
sempus
Dakishimetai no ni...
Colaborador
Desconectado
Mensajes: 2.391
GJDAM 愛している
|
Como tengo que dejarlo finalmente? Quitando el sum() i como dejo el group by?
Esto depende de como sea el resultado final al que tenemos llegar, tienes el enunciado? asi lo leo, talvez ya lo tengas bien Pq el break y el compute sabes si estan bien? nose, no uso oracle, me imagino que esto es de ese gestor salu2
|
|
|
En línea
|
...si la tuviera detendría el tiempo para verla como lo hago en este momento y seria feliz eternamente... Descarga openSUSE
|
|
|
CrÄsH
Desconectado
Mensajes: 624
========
|
Este es el enunciado es :
3-Comandos para imprimir el siguiente listado de ventas del dia.Con una pagina por cliente i teniendo en cuenta k un cliente no tendra mas ventas en un dia k las k entren en una pagina.
Las ventas no estan agrupadas, es decir, si el articulo1 se vende 2 veces al cliente1 el mismo dia apareceran dos lineas.
Formato:
Ventas del Dia:dd/mm/aaaa DNI:11.111.111z Nombre: cliente Direccion: Poblacion: Provincia:
VENTAS:
CODIGO DESCRIPCION CANTIDAD PRECIO TOTAL A0001 ArTICLE1 10 100,00 1000,00
SUMA XXXXX
|
|
|
En línea
|
~~~~~~~~~~~~~~~~
|
|
|
sempus
Dakishimetai no ni...
Colaborador
Desconectado
Mensajes: 2.391
GJDAM 愛している
|
xD es el mismo que habias colocado antes, osea que yo no lei bien segun entiendo el enunciado,entonces el articulo (como el enunciado lo dice ) no tiene que ir agrupado. digamos que vendio A0001 3 veces Ventas del Dia:dd/mm/aaaa DNI:11.111.111z Nombre: cliente Direccion: Poblacion: Provincia: codigo - cantidad - precio - valor A0001 1 10 10 A0001 10 10 100 A0001 100 100 10000 total: 11100 segun entiendo lo que deberias hacer serian dos consultas, una para cabecera y pie de reporte y la otra para sacar el detalle de la venta. Para cabecera SELECT cl.dni, cl.nombre, cl.direccion, cl.poblacion, cl.provincia, SUM(v.cantidadvendida*a.precio) TOTAL FROM articulos a, ventas v, clientes cl WHERE cl.dni=v.dni AND a.codigo=v.codigo GROUP BY cl.dni, cl.nombre, cl.direccion, cl.poblacion, cl.provincia, a.descripcion ORDER BY v.codi,a.descripcion
para detalle SELECT v.codigo, a.descripcion, v.cantidadvendida, a.precio, (v.cantidadvendida*a.precio) valor FROM articulos a, ventas v, clientes cl WHERE cl.dni=v.dni AND a.codigo=v.codigo ORDER BY v.codi,a.descripcion;
claro que esta incompleto, porque nose como manejar las cosas en oracle, pero creo que todo lo demas que tienes de codigo es para dejar un cliente en una sola pagina, porque en estas dos consultas se toman todos los clientes, y no sabemos quien en quien en la de detalle, creo que seria necesario en la consulta de detalle colocar solamente el codigo del cliente, y asi en el reporte hacer la agrupacion,en los reportes que yo suelo usar puedes agrupar datos pero no como hace el group by. En la consulta hay mas de un codigo de cliente (en las dos consultas), y al agruparlos en el reporte, alli se separan, nose si me entiendes? que gestor para reportes usas ? oracle ya tiene el suyo? a menos que filtres el cliente que quieres ver en el where WHERE v.dni=0001
porque con el WHERE cl.dni=v.dni
tomas todos los clientes salu2
|
|
« Última modificación: 20 Abril 2009, 23:09 pm por sempus »
|
En línea
|
...si la tuviera detendría el tiempo para verla como lo hago en este momento y seria feliz eternamente... Descarga openSUSE
|
|
|
CrÄsH
Desconectado
Mensajes: 624
========
|
BREAK ON dni skip page -> Esto es para que cada pagina muestre las ventas de cada cliente, ya que el enunciado dice: "Con una pagina por cliente..." COMPUTE SUM LABEL 'SUMA' OF TOTAL ON PAGE-> esto es para que haga un SUM en cada Break, es decir en cada pagina hara un SuM, el cual aparecera al final de cada pagina, es decir, que sumara lo que se ha vendido al cliente. Vaya lio que llevo ya. haber si nos aclaramos. Cada pagina se mostrara asi: Pagina1: --------- Ventas del Dia:22/04/09 DNI:11.111.111z Nombre: JOSE MORENO Direccion: Balmes,3 Poblacion:madrid Provincia:madrid VENTAS: CODIGO DESCRIPCION CANTIDAD PRECIO TOTAL A0001 ArTICLE1 4 15,00 60,00 A0005 ArTICLE5 7 5,00 35,00 A0015 ArTICLE15 2 20,00 40,00 SUMA 135,00 Pagina 2 ---------- Ventas del Dia:23/04/09 DNI:22.333.111B Nombre: LUIS PUENTES Direccion: zzzzzz Poblacion:BARCELONA Provincia:barcelona VENTAS: CODIGO DESCRIPCION CANTIDAD PRECIO TOTAL A0006 ArTICLE6 5 5,00 30,00 A0008 ArTICLE8 5 10,00 50,00 A0013 ArTICLE13 3 20,00 60,00 SUMA 140,00 Fijate que los datos(ventas del dia, dni, nombre) van cambiando segun el cliente.Y asi para todos los clientes. Hay alguna forma para que kede una select, siguiendo el primer modelo que puse?? Me puedes decir si esta otra select esta bien? Con las siguientes tablas: Alumnos(DNI, nombre,dirección,población,dpostal,provincia,curso,grupo) Asignaturas(CODIGO,nombre,profesor,grupo) Notas(dni,código,eval,nota)
Formato: DNI NOMBRE CODIGO ASIGNATURA NOTA _MEDIANA --------------------------------------------------------------------------------- SELECT al.dni, al.nombre, as.codigo,as.nombre,AVG(n.nota) nota_mediana From alumnos al, asignaturas as, notas n WHERE al.dni=n.dni And as.codigo=n.codigo GROUP BY al.dni, al.nombre, as.codigo,as.nombre ORDER BY al.dni;
Muchas Gracias.
|
|
|
En línea
|
~~~~~~~~~~~~~~~~
|
|
|
sempus
Dakishimetai no ni...
Colaborador
Desconectado
Mensajes: 2.391
GJDAM 愛している
|
hola de nuevo. pues segun entiendo en el enunciado, las ventas no seran agrupadas, por lo tanto deberias quitar el sum( ) de tu consulta original. y eliminar el group by . el sum( ) hasta donde entiendo no lo necesitas porque ya estas opteniendo el total de cada pagina con el COMPUTE SUM LABEL 'SUMA' OF TOTAL ON PAGE
ahora, en ambos ejemplos me das un ejemplo con codigos no repetidos, cuando en el enunciado dice que si se podran repetir pero bueno, creo que solo es un ejemplo ^^ lo otro que pones de alumno esta bien salu2
|
|
« Última modificación: 23 Abril 2009, 16:42 pm por sempus »
|
En línea
|
...si la tuviera detendría el tiempo para verla como lo hago en este momento y seria feliz eternamente... Descarga openSUSE
|
|
|
CrÄsH
Desconectado
Mensajes: 624
========
|
Siento molestarte de nuevo, pero te prometo que este sera el ultimo. Con las siguientes tablas: Alumnos(DNI, nombre,dirección,población,dpostal,provincia,curso,grupo) Asignaturas(CODIGO,nombre,profesor,grupo) Notas(dni,código,eval,nota) 2-Escribe las instrucciones necsarias para imprimir el boletín de notas de cada alumno en una evaluación determinada. Los valores posibles de campo eval(evaluación) son:1,2,3… SET ECHO OFF SET VERIFY OFF DEFINE evaluación DEFINE alumno Break on dni skip page Compute avg of sum(n.nota) on page Column eval noprint new_value vneval Column dni noprint new_value vadni Column nombre noprint new_value vanombre Column curso noprint new_value vacurso Column grupo noprint new_value vagrupo TTI center ‘Boletin de notas de la evaluacion’ vneval skip 1 ‘DNI:’vadni ‘Nombre:’ vanombre ‘Curso:’vacurso ‘Grupo:’vagrupo skip 2 Left ‘Asignaturas:’ Select n.eval, a.dni,a.nombre, a.curso,a.grupo,as.codigo, as.nombre,n.nota From alumnos a,notas n , asignaturas as Where a.dni=n.dni And as.codigo=n.codigo And n.eval=&evaluación And n.nombre=&alumno Order by a.dni
Ya me diras si esta correcto, o como lo haria tu. Graciassss
|
|
|
En línea
|
~~~~~~~~~~~~~~~~
|
|
|
sempus
Dakishimetai no ni...
Colaborador
Desconectado
Mensajes: 2.391
GJDAM 愛している
|
creo que en la parte And n.nombre=&alumno seria And n.dni = &alumno, porque el campo nombre no existe en la tabla notas asumo que en &alumno iria el codigo del alumno. por cierto, no me molestas para eso es el foro ^^ salu2
|
|
|
En línea
|
...si la tuviera detendría el tiempo para verla como lo hago en este momento y seria feliz eternamente... Descarga openSUSE
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con estos ejercicios
Programación C/C++
|
shibu
|
0
|
3,438
|
8 Abril 2012, 03:55 am
por shibu
|
|
|
como pasar estos ejercicios de pascal a c++
Programación Visual Basic
|
hunter22
|
1
|
2,465
|
17 Octubre 2013, 12:53 pm
por noele1995
|
|
|
¿Como hago estos ejercicios de C++?
Programación C/C++
|
Jose2017
|
0
|
1,926
|
7 Abril 2017, 15:14 pm
por Jose2017
|
|
|
nececito que me ayuden en estos 2 ejercicios de c++ agradeceria su colaboracion
Programación C/C++
|
yuber2017
|
3
|
2,004
|
13 Agosto 2017, 22:26 pm
por engel lex
|
|
|
Sabéis el resultado de estos ejercicios?
Dudas Generales
|
Antoniolukino
|
0
|
4,044
|
7 Noviembre 2021, 22:39 pm
por Antoniolukino
|
|