Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Agrupar por pedido


Portanto, a partir dos comentários e da adição do SqlFiddle, parece que você deseja criar um número de linha particionado com precedência em US por plataforma e, em seguida, selecione o primeiro registro. Uma maneira de fazer números de linha particionados no mysql é usar variáveis ​​aqui é um exemplo:
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

Basicamente, isso particiona o número da linha por plataforma, ordena US antes de qualquer outro território e, em seguida, seleciona a primeira linha para a plataforma. A única pergunta/truque é como você escolhe qual retornar quando o US não está disponível para a plataforma simplesmente a ordem alfabética crescente do Território_id?