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

Преброяване на редове в дял с Подреждане по

Когато добавите order by към агрегат, използван като прозоречна функция, този агрегат се превръща в "текущ брой" (или какъвто и да е агрегат, който използвате).

count(*) ще върне броя на редовете до "текущия" въз основа на посочения ред.

Следната заявка показва различните резултати за агрегати, използвани с order by . С sum() вместо count() малко по-лесно се вижда (по мое мнение).

with test (id, num, x) as (
  values 
    (1, 4, 1),
    (2, 4, 1),
    (3, 5, 2),
    (4, 6, 2)
)
select id, 
       num,
       x,
       count(*) over () as total_rows, 
       count(*) over (order by id) as rows_upto,
       count(*) over (partition by x order by id) as rows_per_x,
       sum(num) over (partition by x) as total_for_x,
       sum(num) over (order by id) as sum_upto,
       sum(num) over (partition by x order by id) as sum_for_x_upto
from test;

ще доведе до:

id | num | x | total_rows | rows_upto | rows_per_x | total_for_x | sum_upto | sum_for_x_upto
---+-----+---+------------+-----------+------------+-------------+----------+---------------
 1 |   4 | 1 |          4 |         1 |          1 |           8 |        4 |              4
 2 |   4 | 1 |          4 |         2 |          2 |           8 |        8 |              8
 3 |   5 | 2 |          4 |         3 |          1 |          11 |       13 |              5
 4 |   6 | 2 |          4 |         4 |          2 |          11 |       19 |             11

Има още примери в ръководството на Postgres



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

  2. PostgreSQL:Предупреждение:Кодовата страница на конзолата (437) се различава от кодовата страница на Windows (1252)

  3. Postgres SSL грешка

  4. Използване на регулярен израз в WHERE в Postgres

  5. Безкраен цикъл в тригерната функция