sql >> Database teknologi >  >> RDS >> PostgreSQL

Vælg N rækker med blandede værdier

SQL Fiddle Demo

Som du kan se, opretter jeg et group_idgroup_id = 1 vil være den mindre TimeStamp for hver port

Det andet felt er time_id så i ORDER BY efter jeg har valgt alle 1 medbring alle 2,3,4 for enhver 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

OUTPUT

| 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. Søg i et kolonnenavn på tværs af alle databaser

  2. ROWIDTONCHAR() Funktion i Oracle

  3. Sådan fungerer TIMESTAMPADD() i MariaDB

  4. Django-forespørgsel i One to Many-forholdet