2 votos

ORDER BY con GROUP_CONCAT DISTINCT en QGIS3

Hay dos zonas S1 y S2. Cada área se visitó dos veces para recolectar abejorros. Quiero todas las especies que se han encontrado en cada área como una cadena separada por comas en orden alfabético.

area|    date  |species
--------------------------------
S1  |2021-04-01|B.terrestris
S1  |2021-04-01|B.cryptarum
S1  |2021-04-01|B.lapidarius
S1  |2021-06-01|B.terrestris
S1  |2021-06-01|B.lapidarius
S1  |2021-06-01|B.terrestris
S1  |2021-06-01|B.cryptarum
S1  |2021-06-01|B.lapidarius
S2  |2021-04-01|B.lapidarius
S2  |2021-06-01|B.lapidarius
S2  |2021-06-01|B.cryptarum
S2  |2021-06-01|B.cryptarum

S1|B.cryptarum,B.lapidarius,B.terrestris
S2|B.cryptarum,B.lapidarus

¿Por qué una consulta como

SELECT 
  area, group_concat(DISTINCT species ORDER BY species ASC)
FROM table
GROUP BY area

no funciona en QGIS3? Recibo un error de sintaxis. Cuando elimino ORDER BY Obtengo el resultado esperado excepto el orden alfabético. ¿A qué se debe?

2voto

Removed_account Puntos 721

Una alternancia utilizando herramientas de procesamiento y expresiones (sé que es OT, pero puede ser útil)

Agregado configurado como se indica a continuación:

enter image description here

  1. su capa
  2. campo para agrupar
  3. expresión a utilizar

expresión utilizada:

concatenate_unique( 
     group_by:="area",
     concatenator:=',',
     expression:="species",
     order_by:="species")

salida:

enter image description here

0voto

MacManager Puntos 136

Siempre he pensado que no se puede utilizar ORDER BY en subconsultas. Esta consulta resuelve mi problema:

SELECT 
  area, group_concat(DISTINCT species)
FROM (
  SELECT 
     area, species
  FROM mytable
  ORDER BY species ASC
  )
GROUP BY area

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X