FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Obtener los datos máximos
Hola tod@s:
Acabo de encontrar este foro y aunque he visto consultas similares, no consigo seguir adelante con un ejercicio, así que os solicito un poco de ayuda. Tengo una base de datos con dos tablas: Tabla 1 - Pisos: codigo_piso (clave principal) y código_postal Tabla 2 - Ventas: codigo_piso (clave) La base de datos refleja las ventas de los pisos y necesito mostrar los código postales donde se han vendido más pisos. Si hago: Código:
SELECT pi.codi_postal_pis, count (*) AS venuts FROM pisos pi, vendes v WHERE pi.codi_pis = v.codi_pis GROUP BY pi.codi_postal_pis ORDER BY venuts DESC; 08033 3 08120 3 17130 2 08018 1 08200 1 Lo que nesitaría es sólo mostrar os códigos postales de más ventas, osea: 08033 08120 Creo que se debería usar la función MAX, pero no sé como usar esta función de una cuenta. ¿Alguna idea? ¿Alguna recomendación? Os estaría muy agradecida. Saludos |
#2
|
||||
|
||||
Hola, con el Max solo obtendras un registro osea el maximo, si quieres mostrar los 2 registros que tienen mayores ventas, sobre tu consulta solo tendrías que aumentar Top o First según a la base de datos que estas utilizando, que te devuelven los primeros n registros de tu consulta.
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#3
|
|||
|
|||
Gracias por tu respuesta!!! Ya lo había considerado pero eso supone que yo ya sé cuantos registros máximos hay en la BBDD.
Si yo no sé si los mayores son 2, 3, 4 o n, como podría hacerlo???? A ver si alguien tiene alguna otra idea. Gracias de nuevo |
#4
|
|||
|
|||
Hola, puedes obtener mediante max el numero maximo de ventas en una subconsulta y luego filtrar segun numero de ventas. saludos.
|
#5
|
|||
|
|||
Gracias pero... debo ser demasiado novata en esto.
El problema principal que tengo es sacar dicha subconsulta max, ya que sería una consulta de un count, algo como max (count (*) y me da error. ¿Podrías indicarme un poco como hacerlo o darme alguna idea o guia de referencia? Gracias |
#6
|
|||
|
|||
prueba esto a ver...
no estoy seguro de si funcionara, pero la idea seria esa. saludos. |
#7
|
||||
|
||||
Hola de nuevo, tendría que ser algo como esto:
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#8
|
|||
|
|||
Voy a mirarlo, porque me da un fallo...
Gracias |
#9
|
|||
|
|||
Nada me sigue sin salir.
El tema es que de todos los datos que salen, si utilizo la función MAX sólo muestra uno de ellos. ¿Alguien puede indicarme como puedo hacer para selecciónar más de un registro máximo? Es decir, si existen dos valores que se repiten y que son máximos los dos que salgan. Gracias |
#10
|
|||
|
|||
Lo dicho, puedes obtener el numero de maximas ventas y luego filtrar al respecto. saludos.
|
#11
|
|||
|
|||
Pues te agradezco tu respuesta pero me quedo igual.
El resultado que debía de darme es: Codi_postal ventas 08033 3 08120 3 y el que obtengo es el de todos: Codi_postal ventas 08033 3 08120 3 17130 2 08018 1 08200 1 El código que tengo es: Código:
SELECT pi.codi_postal_pis, count (*) AS venuts FROM pisos pi, vendes v WHERE pi.codi_pis = v.codi_pis GROUP BY pi.codi_postal_pis ORDER BY venuts DESC; Gracias |
#12
|
||||
|
||||
Cita:
Cita:
Con la consulta que te he pasado :
Con la subconsulta obtienes todos los Count y de esos registros obtienes los maximos, que es lo que tu quieres, si encuentra 2 te va ha mostrar los dos registros, el problema que yo veo es poder mostrar en el Select mas campos "el codigo postal", para saber ese maximo a que codigo postal corresponde. Para mostrar mas campos se debe usar el group by por los campos que se quiere aumentar, pero aumentando ya no sale lo que queremos si no me equivoco va a salir como el count de la subconsulta. Yo también quisiera saber como poder aumentar mas campos, si fuera solo sobre los maximos de una tabla se soluciona con lo que te paso coso.
pero de la forma que tenemos arriba nose, espero que alguien mas pueda ayudarnos y nos quite la duda. Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. Última edición por Caro fecha: 16-11-2008 a las 02:47:00. |
#13
|
||||
|
||||
Cita:
La manera en que lo planteas es un poco ambigua pero sujetandonos a tu ejemplo vamos a suponer que el max de todas las ventas será considerado como el mayor, entonces tendremos que obtener todos aquellos códigos postales que coincidan con esa venta. Para ello deberemos hacerlo de la siguiente manera:
Desde mi perspectiva sería mejor si defines un rango de valores que se podrían considerar los de mayores ventas. No se es mi perspectiva no conozco al 100% tu requerimiento. Para ello necesitamos sacar el promedio de ventas entonces podriamos considerar como codigos postales de mayor venta aquellos mayores al promedio y menores o igual al máximo. Considerando esto podriamos hacer lo siguiente:
Saluditos
__________________
Conoce mi blog http://www.edgartec.com |
#14
|
|||
|
|||
Buenas:
La solución me parece perfecta pero aún asi me da error de sintaxis. Yo utilizo informix 10. Puede ser problema del informix? Gracias poliburro!!!! |
#15
|
||||
|
||||
Cita:
Efectivamente, informix tiene su propia sintaxis basada en AnsiSql-92 como cualquier otro lenguaje . Te aconsejo separar las consultas y ejcutarlas una por una, ya que hayas verificado que todas se ejecutan satisfactoriamente puedes integrarlas en los prototipos que he posteado. Lamentablemente no conozco mucho informix aún cuando es una base de datos que me encantaria usar. Pero si posteas los errores de sintaxis seguramente encontraremos juntos la solución. Saludos
__________________
Conoce mi blog http://www.edgartec.com |
#16
|
||||
|
||||
Cita:
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#17
|
|||
|
|||
Hola a todos:
Perdonad que insista pero me sigue sin salir. He probado de todo pero no salen los dos valores que mas se repiten. Os pongo el código sobre el que estoy trabajando en Informix por si alguien puede darme alguna idea mas: Código SQL [-]SELECT p.codi_postal_pis FROM Pisos p, Vendes v WHERE p.codi_pis = v.codi_pis GROUP BY p.codi_postal_pis HAVING COUNT(*) >all (SELECT count(*) FROM Vendes v2, pisos p2 WHERE v2.codi_pis = p2.codi_pis GROUP BY p2.CODI_PIS) ORDER BY COUNT (*) DESC; Con este codigo me muestra los tres primeros valores, es decir, los codigos postales de pisos vendidos en 3 y 2 ocasiones y sólo necesito que muestre los dos primeros. Por favor, alguna ayuda o recomendación??? Gracias |
#18
|
|||
|
|||
Hola de nuevo: si el problema es el mismo que el inicial, creo que lo que tendrias que hacer es primero encontrar el numero maximo de ventas y luego filtrar tu tabla segun este numero, algo como :
claro esta, traducido a tus tablas. Saludos. PD: vale, que son tablas separadas. Última edición por coso fecha: 29-11-2008 a las 14:27:58. |
#19
|
|||
|
|||
a ver esto...
...pruebalo y nos cuentas. saludos. |
#20
|
|||
|
|||
De nuevo agradeceros vuestra atención pero sigue sin funcionar
Lo primero es que la consulta solo debe mostrar los códigos postales Código:
select pi.codi_postal_pis De todas formas el código anterior me da error y tampoco puedo probar si funciona. Sin abusar demasiado alguna otra idea??? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consulta sql maximos | franfl | Firebird e Interbase | 12 | 14-07-2008 20:02:47 |
Histograma. Obtener máximos y mínimos relativos | Delphius | Varios | 7 | 16-04-2007 12:12:46 |
Obtener datos | JavierO | Tablas planas | 1 | 02-08-2005 19:30:18 |
Maximos | Carlex | SQL | 1 | 03-02-2005 19:23:53 |
obtener filas que contienen unos datos y no contienen otros datos | Angel | Firebird e Interbase | 14 | 10-06-2003 10:11:23 |
|