PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wybierz N wierszy z wartościami mieszanymi

Pokaz SQL Fiddle

Jak widzisz, tworzę group_id więc group_id = 1 będzie mniejszy TimeStamp dla każdego portu

Drugie pole to time_id więc w ORDER BY po zaznaczeniu wszystkich 1 przynieś wszystkie 2,3,4 dla dowolnego portu.

   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

WYJŚCIE

| 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Limit rozmiaru typu danych JSON w PostgreSQL

  2. Jak przesłać dane z AWS Postgres RDS do S3 (wtedy Redshift)?

  3. pg_dump z użytkownikiem nie superadmin i dużymi obiektami

  4. Jak przełączyć wartość logiczną w postgresie w jednym zapytaniu

  5. Lokalizacja bazy postgresql na OS X?