group_concat functions example mysql sql mysql-error-1111

mysql - functions - SQL Group By con un orden por



mysql group by having (6)

Puede superar este límite con la sintaxis en desuso: PEDIR POR 1 DESC

Esta sintaxis no está en desuso, es E121-03 de SQL99.

Tengo una tabla de etiquetas y quiero obtener las etiquetas de mayor conteo de la lista.

Los datos de muestra se ven así

id (1) tag (''night'') id (2) tag (''awesome'') id (3) tag (''night'')

utilizando

SELECT COUNT(*), `Tag` from `images-tags` GROUP BY `Tag`

me devuelve los datos que estoy buscando a la perfección. Sin embargo, me gustaría organizarlo, de modo que los recuentos de etiquetas más altos sean los primeros, y limitarlo a enviarme solamente los primeros 20 o más.

Intenté esto ...

SELECT COUNT(id), `Tag` from `images-tags` GROUP BY `Tag` ORDER BY COUNT(id) DESC LIMIT 20

y sigo obteniendo un "Uso no válido de la función de grupo - ErrNr 1111"

¿Qué estoy haciendo mal?

Estoy usando MySQL 4.1.25-Debian


En Oracle, algo como esto funciona bien para separar su conteo y ordenar un poco mejor. No estoy seguro si funcionará en MySql 4.

select ''Tag'', counts.cnt from ( select count(*) as cnt, ''Tag'' from ''images-tags'' group by ''tag'' ) counts order by counts.cnt desc


En todas las versiones de MySQL, simplemente alias el agregado en la lista SELECCIONAR y ordenar por el alias:

SELECT COUNT(id) AS theCount, `Tag` from `images-tags` GROUP BY `Tag` ORDER BY theCount DESC LIMIT 20


MySQL anterior a la versión 5 no permitía agregar funciones en las cláusulas ORDER BY.

Puede superar este límite con la sintaxis obsoleta:

SELECT COUNT(id), `Tag` from `images-tags` GROUP BY `Tag` ORDER BY 1 DESC LIMIT 20

1, ya que es la primera columna en la que desea agrupar.


No sé acerca de MySQL, pero en MS SQL, puede usar el índice de columna en la cláusula order by . Ya he hecho esto antes cuando se cuenta con el group by s, ya que suele ser más fácil trabajar con él.

Asi que

SELECT COUNT(id), `Tag` from `images-tags` GROUP BY `Tag` ORDER BY COUNT(id) DESC LIMIT 20

Se convierte

SELECT COUNT(id), `Tag` from `images-tags` GROUP BY `Tag` ORDER 1 DESC LIMIT 20


Prueba esta consulta

SELECT data_collector_id , count (data_collector_id ) as frequency from rent_flats where is_contact_person_landlord = ''True'' GROUP BY data_collector_id ORDER BY count(data_collector_id) DESC