sql >> Databáze >  >> RDS >> PostgreSQL

Vyberte N řádků se smíšenými hodnotami

Ukázka SQL Fiddle

Jak můžete vidět, vytvářím group_id takže group_id = 1 bude menší TimeStamp pro každý port

Druhé pole je time_id tak v ORDER BY poté, co vyberu všechny 1 přinést všechny 2,3,4 pro jakýkoli port.

   SELECT *
   FROM (
         SELECT *, 
            row_number() over (partition by "port" order by "insertTimeStamp") group_id,
            row_number() over (order by "insertTimeStamp") time_id
         FROM Table1 T
   ) as T
   ORDER BY CASE 
               WHEN group_id = 1 THEN group_id
               ELSE time_id
            END
   LIMIT 4

VÝSTUP

| insertTimeStamp | port | data | group_id | time_id |
|-----------------|------|------|----------|---------|
|               1 |   20 |  aaa |        1 |       1 |
|               2 |   21 |  aza |        1 |       3 |
|              15 |   22 |  2aa |        1 |       8 |
|               2 |   20 |  aba |        2 |       2 |


  1. Rozšířené události pro SSAS

  2. Oracle ODP.Net With Entity Framework 6 – poskytovatel kompatibilní s databází Entity Framework nebyl nalezen

  3. Jak získat data z databáze mysql

  4. Jak používat sekvence Oracle DB bez ztráty dalšího pořadového čísla v případě vrácení zpět