sql >> Database >  >> RDS >> Mysql

GROEP OP bestelling

Dus uit de opmerkingen en de toevoeging van de SqlFiddle lijkt het erop dat je een gepartitioneerd rijnummer wilt maken met een prioriteit op VS per platform en vervolgens het eerste record selecteert. Een manier om gepartitioneerde rijnummers in mysql te doen, is door variabelen te gebruiken, hier is een voorbeeld:

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

In principe verdeelt dit het rijnummer per platform, bestelt de VS voor elk ander territorium en selecteert vervolgens de eerste rij voor elk platform. De enige vraag/truc is hoe je kiest welke je wilt retourneren als de VS niet beschikbaar is voor het platform, simpelweg in oplopende alfabetische volgorde van de territorium_id?




  1. Hoe maak ik permalinks die databasegestuurd zijn?

  2. Postgresql base64-codering

  3. Hoe kom ik erachter of een functie bestaat in PostgreSQL?

  4. Oracle SQL Loop door datumbereik