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
|
||||
|
||||
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 |
#8
|
|||
|
|||
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!!!! |
#9
|
||||
|
||||
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 |
#10
|
||||
|
||||
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. |
#11
|
|||
|
|||
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 |
#12
|
|||
|
|||
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. |
#13
|
|||
|
|||
a ver esto...
...pruebalo y nos cuentas. saludos. |
|
|
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 |
|