sql >> Base de Datos >  >> RDS >> Mysql

GRUPO POR pedido

Entonces, a partir de los comentarios y la adición de SqlFiddle, en realidad parece que desea crear un número de fila con particiones con prioridad en EE. UU. por plataforma y luego seleccionar el primer registro. Una forma de hacer números de fila particionados en mysql es usar variables aquí hay un ejemplo:

SELECT
  territory_id
  ,platform_type_id
  ,store_url
FROM
( SELECT
    *
    ,@PlatFormRowNum:= IF(@prevplatform = platform_type_id, @PlatFormRowNum + 1, 1) as PlatformRowNum
    ,@prevplatform:= platform_type_id
  FROM
    main_itemmaster m
    CROSS JOIN (SELECT @prevplatform:='',@PlatFormRowNum=0) var
  ORDER BY
    platform_type_id
    ,CASE WHEN territory_id = 'US' THEN 0 ELSE 1 END
    ,territory_id
) t
WHERE
  t.PlatformRowNum = 1
ORDER BY
  t.platform_type_id

SQL Fiddle:http://sqlfiddle.com/#!9/81c3b6/12

Básicamente, esto divide el número de fila por plataforma, ordena EE. UU. antes que cualquier otro territorio y luego selecciona la primera fila para cada plataforma. La única pregunta/truco es ¿cómo eliges cuál devolver cuando EE. UU. no está disponible para la plataforma, simplemente el orden alfabético ascendente del id_territorio?