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

Как да нулирате работещия SUM, след като достигне праг?

Бих искал да благодаря на Хуан Карлос Оропеза за предоставянето на скрипт и SQLFiddle с тестовите данни. Джордж, трябваше да го направиш.

Самата заявка е доста проста.

Първо изчислете обикновена текуща сума (CTE_RunningSum ) и го разделете на 1 000 000 за да получите брой цели милиони.

След това изчислете отново текущата сума с разделяне по брой милиони.

SQL Fiddle

Включих колоните RunningSum и Милиони в крайния резултат, за да илюстрира как работи заявката.

WITHCTE_RunningSumAS( SELECT ID ,day_t ,collect ,SUM(collect) OVER(ORDER BY day_t, id) КАТО RunningSum ,(SUM(collect) OVER(ORDER BY day_t, id)) / 1000000 FROM my AS Mill )SELECT ID ,day_t ,collect ,RunningSum ,Милиони ,SUM(collect) OVER(PARTITION BY Millions ORDER BY day_t, id) КАТО РезултатFROM CTE_RunningSumORDER BY day_t, id; 

Резултат

<предварителен код>| ID | ден_т | събиране | текуща сума | милиони | резултат ||-----|----------------------------|---------|- -----------|----------|---------|| 90 | 11 март 2015 г. 00:00:00 | 69880 | 69880 | 0 | 69880 || 13 | 25 март 2015 г. 00:00:00 | 69484 | 139364 | 0 | 139364 || 49 | 27 март 2015 г. 00:00:00 | 57412 | 196776 | 0 | 196776 || 41 | 30 март 2015 г. 00:00:00 | 56404 | 253180 | 0 | 253180 || 99 | 03 април 2015 г. 00:00:00 | 59426 | 312606 | 0 | 312606 || 1 | 10 април 2015 г. 00:00:00 | 65825 | 378431 | 0 | 378431 || 100 | 27 април 2015 г. 00:00:00 | 60884 | 439315 | 0 | 439315 || 50 | 11 май 2015 г. 00:00:00 | 39641 | 478956 | 0 | 478956 || 58 | 11 май 2015 г. 00:00:00 | 49759 | 528715 | 0 | 528715 || 51 | 17 май 2015 г. 00:00:00 | 32895 | 561610 | 0 | 561610 || 15 | 19 май 2015 г. 00:00:00 | 50847 | 612457 | 0 | 612457 || 66 | 29 май 2015 г. 00:00:00 | 66332 | 678789 | 0 | 678789 || 4 | 04 юни 2015 г. 00:00:00 | 46891 | 725680 | 0 | 725680 || 38 | 09 юни 2015 г. 00:00:00 | 64732 | 790412 | 0 | 790412 || 79 | 14 юни 2015 г. 00:00:00 | 62843 | 853255 | 0 | 853255 || 37 | 28 юни 2015 г. 00:00:00 | 54315 | 907570 | 0 | 907570 || 59 | 30 юни 2015 г. 00:00:00 | 34885 | 942455 | 0 | 942455 || 71 | 08 юли 2015 г. 00:00:00 | 46440 | 988895 | 0 | 988895 || 31 | 10 юли 2015 г. 00:00:00 | 39649 | 1028544 | 1 | 39649 || 91 | 12 юли 2015 г. 00:00:00 | 65048 | 1093592 | 1 | 104697 || 57 | 14 юли 2015 г. 00:00:00 | 60394 | 1153986 | 1 | 165091 || 98 | 20 юли 2015 г. 00:00:00 | 34481 | 1188467 | 1 | 199572 || 3 | 26 юли 2015 г. 00:00:00 | 58672 | 1247139 | 1 | 258244 || 95 | 19 август 2015 г. 00:00:00 | 52393 | 1299532 | 1 | 310637 || 74 | 20 август 2015 г. 00:00:00 | 37972 | 1337504 | 1 | 348609 || 20 | 27 август 2015 г. 00:00:00 | 36882 | 1374386 | 1 | 385491 || 2 | 07 септември 2015 г. 00:00:00 | 39408 | 1413794 | 1 | 424899 || 14 | 09 септември 2015 г. 00:00:00 | 40234 | 1454028 | 1 | 465133 || 6 | 17 септември 2015 г. 00:00:00 | 65957 | 1519985 | 1 | 531090 || 93 | 29 септември 2015 г. 00:00:00 | 47213 | 1567198 | 1 | 578303 || 35 | 30 септември 2015 г. 00:00:00 | 49446 | 1616644 | 1 | 627749 || 86 | 11 октомври 2015 г. 00:00:00 | 34291 | 1650935 | 1 | 662040 || 75 | 12 октомври 2015 г. 00:00:00 | 31448 | 1682383 | 1 | 693488 || 19 | 14 октомври 2015 г. 00:00:00 | 48509 | 1730892 | 1 | 741997 || 56 | 26 октомври 2015 г. 00:00:00 | 30072 | 1760964 | 1 | 772069 || 48 | 28 октомври 2015 г. 00:00:00 | 58527 | 1819491 | 1 | 830596 || 40 | 05 ноември 2015 г. 00:00:00 | 67293 | 1886784 | 1 | 897889 || 33 | 09 ноември 2015 г. 00:00:00 | 41944 | 1928728 | 1 | 939833 || 34 | 11 ноември 2015 г. 00:00:00 | 35516 | 1964244 | 1 | 975349 || 85 | 20 ноември 2015 г. 00:00:00 | 43920 | 2008164 | 2 | 43920 || 18 | 23 ноември 2015 г. 00:00:00 | 44925 | 2053089 | 2 | 88845 || 62 | 24 декември 2015 г. 00:00:00 | 34678 | 2087767 | 2 | 123523 || 67 | 25 декември 2015 г. 00:00:00 | 35323 | 2123090 | 2 | 158846 || 81 | 28 декември 2015 г. 00:00:00 | 37071 | 2160161 | 2 | 195917 || 54 | 02 януари 2016 г. 00:00:00 | 32330 | 2192491 | 2 | 228247 || 70 | 06 януари 2016 г. 00:00:00 | 47875 | 2240366 | 2 | 276122 || 28 | 23 януари 2016 г. 00:00:00 | 40250 | 2280616 | 2 | 316372 || 65 | 25 януари 2016 г. 00:00:00 | 49404 | 2330020 | 2 | 365776 || 73 | 26 януари 2016 г. 00:00:00 | 65879 | 2395899 | 2 | 431655 || 5 | 05 февруари 2016 г. 00:00:00 | 53953 | 2449852 | 2 | 485608 || 32 | 11 февруари 2016 г. 00:00:00 | 44988 | 2494840 | 2 | 530596 || 53 | 25 февруари 2016 г. 00:00:00 | 68948 | 2563788 | 2 | 599544 || 83 | 11 март 2016 г. 00:00:00 | 47244 | 2611032 | 2 | 646788 || 8 | 25 март 2016 г. 00:00:00 | 51809 | 2662841 | 2 | 698597 || 82 | 25 март 2016 г. 00:00:00 | 66506 | 2729347 | 2 | 765103 || 88 | 06 април 2016 г. 00:00:00 | 69288 | 2798635 | 2 | 834391 || 89 | 14 април 2016 г. 00:00:00 | 43162 | 2841797 | 2 | 877553 || 52 | 23 април 2016 г. 00:00:00 | 47772 | 2889569 | 2 | 925325 || 7 | 27 април 2016 г. 00:00:00 | 33368 | 2922937 | 2 | 958693 || 84 | 27 април 2016 г. 00:00:00 | 57644 | 2980581 | 2 | 1016337 || 17 | 17 май 2016 г. 00:00:00 | 35416 | 3015997 | 3 | 35416 || 61 | 17 май 2016 г. 00:00:00 | 64603 | 3080600 | 3 | 100019 || 87 | 07 юни 2016 г. 00:00:00 | 41865 | 3122465 | 3 | 141884 || 97 | 08 юни 2016 г. 00:00:00 | 64982 | 3187447 | 3 | 206866 || 92 | 15 юни 2016 г. 00:00:00 | 58684 | 3246131 | 3 | 265550 || 23 | 26 юни 2016 г. 00:00:00 | 46147 | 3292278 | 3 | 311697 || 46 | 30 юни 2016 г. 00:00:00 | 61921 | 3354199 | 3 | 373618 || 94 | 03 юли 2016 г. 00:00:00 | 55535 | 3409734 | 3 | 429153 || 60 | 07 юли 2016 г. 00:00:00 | 63607 | 3473341 | 3 | 492760 || 45 | 20 юли 2016 г. 00:00:00 | 51965 | 3525306 | 3 | 544725 || 96 | 20 юли 2016 г. 00:00:00 | 46684 | 3571990 | 3 | 591409 || 29 | 09 август 2016 г. 00:00:00 | 37707 | 3609697 | 3 | 629116 || 69 | 11 август 2016 г. 00:00:00 | 37194 | 3646891 | 3 | 666310 || 80 | 19 август 2016 г. 00:00:00 | 62673 | 3709564 | 3 | 728983 || 36 | 28 август 2016 г. 00:00:00 | 48237 | 3757801 | 3 | 777220 || 39 | 29 август 2016 г. 00:00:00 | 48159 | 3805960 | 3 | 825379 || 25 | 30 август 2016 г. 00:00:00 | 60958 | 3866918 | 3 | 886337 || 68 | 04 септември 2016 г. 00:00:00 | 50167 | 3917085 | 3 | 936504 || 55 | 08 септември 2016 г. 00:00:00 | 31193 | 3948278 | 3 | 967697 || 64 | 10 септември 2016 г. 00:00:00 | 31157 | 3979435 | 3 | 998854 || 42 | 14 септември 2016 г. 00:00:00 | 52878 | 4032313 | 4 | 52878 || 43 | 15 септември 2016 г. 00:00:00 | 54728 | 4087041 | 4 | 107606 || 77 | 18 септември 2016 г. 00:00:00 | 65320 | 4152361 | 4 | 172926 || 12 | 23 септември 2016 г. 00:00:00 | 43597 | 4195958 | 4 | 216523 || 30 | 26 септември 2016 г. 00:00:00 | 32764 | 4228722 | 4 | 249287 || 10 | 27 септември 2016 г. 00:00:00 | 47038 | 4275760 | 4 | 296325 || 47 | 08 октомври 2016 г. 00:00:00 | 46280 | 4322040 | 4 | 342605 || 26 | 10 октомври 2016 г. 00:00:00 | 69487 | 4391527 | 4 | 412092 || 63 | 30 октомври 2016 г. 00:00:00 | 49561 | 4441088 | 4 | 461653 || 78 | 15 ноември 2016 г. 00:00:00 | 40138 | 4481226 | 4 | 501791 || 27 | 27 ноември 2016 г. 00:00:00 | 57378 | 4538604 | 4 | 559169 || 21 | 01 декември 2016 г. 00:00:00 | 35336 | 4573940 | 4 | 594505 || 16 | 03 декември 2016 г. 00:00:00 | 39671 | 4613611 | 4 | 634176 || 22 | 13 декември 2016 г. 00:00:00 | 34574 | 4648185 | 4 | 668750 || 72 | 29 януари 2017 г. 00:00:00 | 55084 | 4703269 | 4 | 723834 || 44 | 30 януари 2017 г. 00:00:00 | 36742 | 4740011 | 4 | 760576 || 24 | 01 февруари 2017 г. 00:00:00 | 31061 | 4771072 | 4 | 791637 || 76 | 12 февруари 2017 г. 00:00:00 | 35059 | 4806131 | 4 | 826696 || 9 | 27 февруари 2017 г. 00:00:00 | 39767 | 4845898 | 4 | 866463 || 11 | 28 февруари 2017 г. 00:00:00 | 66007 | 4911905 | 4 | 932470 |

  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. PostgreSQL:между с дата и час

  3. Низ -> java.util.Date -> java.sql.Date (с времеви печат)

  4. PostgreSQL:Заявката няма дестинация за данни за резултатите

  5. Как да архивирам Postgresql база данни от psql?