SQL - Consulta SQL COUNT

   
Vista:

Consulta SQL COUNT

Publicado por juan (3 intervenciones) el 15/11/2012 14:38:06
Hola buenas...

Tengo la siguiente sentencia que me devuelve el id junto con las apariciones de los elementos de la tabla p en la tabla e ordenadas de mayor a menor.

1
2
3
4
5
select p.id, count(*) cont
from personal p, empresas e
where p.id = e.FK_idPersonal
group by p.id
order by cont desc


El resultado sería algo de este estilo:
id cont
3 25
4 12

Lo que necesito es obtener únicamente el id que más veces se repite. Tomando los resultados del ejemplo anterior necesitaría una sql cuyo resultado fuera "3".

Gracias por adelantado, un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

devolver unicamente un registro

Publicado por xve (237 intervenciones) el 15/11/2012 15:10:50
Lo que quieres decir que es únicamente muestre el primer registro??

Si es así, depende del motor de base de datos que estés utilizando...

SQL Server
1
2
3
4
5
select TOP 1 p.id, count(*) cont
from personal p, empresas e
where p.id = e.FK_idPersonal
group by p.id
order by cont desc


MySQL
1
2
3
4
5
select  p.id, count(*) cont
from personal p, empresas e
where p.id = e.FK_idPersonal
group by p.id
order by cont desc LIMIT 1


Espero que te sirva... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

devolver unicamente un registro

Publicado por juan (3 intervenciones) el 15/11/2012 16:58:42
No, no es exactamente eso lo que quiero decir.

La sentencia que indicas me devuelve la primera fila completa:
id cont
3 25

Lo que intento obtener es sólo el id, es decir el valor de la primera columna de la primera fila.

Por cierto estoy usando SQL Server que no lo había puesto en el primer mensaje.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

devolver unicamente un registro

Publicado por leonardo_josue (877 intervenciones) el 16/11/2012 18:17:06
Hola Juan:

Podrías intentarlo así:

1
2
3
4
5
6
SELECT Top 1 id FROM
( SELECT p.id, COUNT(*) cont
  FROM personal p
  INNER JOIN empresas e ON p.id = e.FK_idPersonal
  GROUP BY p.id
  ORDER BY cont DESC ) T



No es recomendable que hagas las uniones entre las tablas con el FROM-WHERE, es preferible que utilices JOIN. Haz la prueba y nos comentas

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

devolver unicamente un registro

Publicado por juan (3 intervenciones) el 16/11/2012 19:04:51
gracias por la ayuda Leo, la solución que ofreces arroja un error:

Mens. 1033: La cláusula ORDER BY no es válida en vistas, funciones en línea, tablas derivadas, subconsultas ni expresiones de tabla común, salvo que se especifique también TOP o FOR XML.

De todas formas lo he solucionado por la calle de enmedio como necesitaba usar el TOP de todos modos lo he puesto en la consulta de dentro y funciona perfectamente.

Las solucion sería;

SELECT id FROM
( SELECT TOP 1 p.id, COUNT(*) cont
FROM personal p
INNER JOIN empresas e ON p.id = e.FK_idPersonal
GROUP BY p.id
ORDER BY cont DESC ) T
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar