AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-258456

Jason's questions

Martin Hope
Jason
Asked: 2022-08-02 14:45:36 +0800 CST

Soma acumulada em um período de meses

  • 2

Eu tenho essa tabela:

mês_rep frutas colhido
01-09-2021 139 139
01-10-2021 143 11
01-11-2021 152 14
01-12-2021 112 9
01-01-2022 133 10
01-02-2022 145 12
01-03-2022 123 5
01-04-2022 111 4
01-05-2022 164 9
01-06-2022 135 12
01-07-2022 124 14
01-08-2022 144 18
01-09-2022 111 111
01-10-2022 108 13
01-11-2022 123 7
01-12-2022 132 20

Eu quero criar uma nova coluna chamada soldque é baseada em um cálculo - que será uma soma em execução harvestedem um período de meses (set-jun). Todo mês de setembro, soldsempre será 1 (ou 100 em por cento). O cálculo para outubro de 2021 será fruits/ ( harvested+ harvested_Nov) = 143 / 11 + 139.

Para os restantes meses de 2021, segue o mesmo formato: fruits/ ( harvested+ harvested_until_Sep) --> esta será uma soma corrente, a partir do mês em que se encontra, e termina em setembro do ano anterior.

Outro exemplo para 2022 é o cálculo para março de 2022 = fruits/ ( harvested+ harvested_Feb_2022+ harvested_Jan_2022+ harvested_Dec_2021+ harvested_Nov_2021+ harvested_Oct_2021+ harvested_Sep_2021) = 123 / (5+12+10+9+14+11+139).

A tabela deve ficar assim:

mês_rep frutas colhido vendido
01-09-2021 139 139 1
01-10-2021 143 11 0,95
01-11-2021 152 14 0,93
01-12-2021 112 9 0,65
01-01-2022 133 10 ..
01-02-2022 145 12 ..
01-03-2022 123 5 ..
01-04-2022 111 4 ..
01-05-2022 164 9 ..
01-06-2022 135 12 ..
01-07-2022 124 14 nulo
01-08-2022 144 18 nulo
01-09-2022 111 111 1
01-10-2022 108 13 0,87
01-11-2022 123 7 0,94
01-12-2022 132 20 ..

Eu tentei isso:

select 
    month_rep,
    fruits,
    harvested,
    case when extract(month from "month_rep") in (7, 8) then null
         when extract(month from "month_rep") = 9 then 1
        else ROUND(fruits / sum(harvested) over (order by month_rep), 2) end sold
from my_table 

Isso funciona bem, mas apenas quando tenho dados antes de setembro de 2022. Eu quero que julho e agosto tenham null sold- o que funciona. Após agosto, setembro de 2022 deve ser um novo período onde soldé 1. Depois disso, outubro de 2022 será calculado como fruits/ ( harvested+ harvested_Sep_2022) - onde iniciamos um novo período para o 2º período de setembro de 2022 a junho de 2023.

Existe uma maneira de agrupar esses "períodos" e ter a soma acumulada sobre isso? Talvez eu precise encontrar uma maneira de agrupar o período e particionar a partir disso.

postgresql window-functions
  • 1 respostas
  • 109 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve