PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да създадете групи с равни размери

Можете да използвате ntile :

SELECT car_id, "date", ntile(CASE WHEN c <=5 THEN 1 WHEN c <=10 THEN 2 ELSE 3 END) OVER (PARTITION BY car_id ORDER BY "date") AS group_idFROM (SELECT car_id , "date", COUNT(*) OVER(PARTITION BY car_id) AS c FROM Table1) AS s 

SqlFiddleDemo

Изход:

<предварителен код>╔════════╦══════════╦══════════╗║ car_id ║ дата ║ group_id ␑═ ════╬══════════╬══════════╣║ 1 ║ 20160101 ║ 1 ║║ 1 ║ 20160103 ║ 1 ║║ 1 ║ 20160105 ║ 1 ║║ 1 ║ 20160106 ║ 1 ║║ 1 ║ 20160107 ║ 2 ║║ 1 ║ 20160108 ║ 2 ║║ 1 ║ 20160109 ║ 2 ║║ 1 ║ 20160110 ║ 2 ║║ 2 ║ 20160102 ║ 1 ║║ 2 ║ 20160104 ║ 1 ║╚══ ══════╩══════════╩══════════╝

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL конвертира името на месеца в число

  2. Как да предоставим всички привилегии за изгледи на произволен потребител

  3. Sqoop на Hadoop:NoSuchMethodError:com.google.common.base.Stopwatch.createStarted()

  4. Създайте уникален индекс на неуникална колона

  5. дублираната стойност на ключ нарушава уникалното ограничение - postgres грешка при опит за създаване на sql таблица от dask dataframe