首页 > 解决方案 > 如何从一张表中的 2 列计算到新表中?PostgreSQL

问题描述

我有一张名为“postgres”的大表,它有 3 列(日期、打开、关闭)和 65000 行。

 postgres
    
        Date       |      Open       |       Close
----------------------------------------------------------
        2019-01-01 |     1.03212     |     1.03243
        2019-01-01 |     1.06212     |     1.09243
        2019-01-02 |     1.02212     |     1.08243
        2019-01-04 |     1.08212     |     1.07243
        +65000 rows

我需要计算一下。对表中的所有行都是这样(case when Open < Close then 1 else 0 end)的,接下来我需要将答案放入新表“Zad2”中。它需要看起来:

    Zad2
    
    Type       |     Amount  
-------------------------------  
    positive   |     23232     
    negative   |     11433     
    equal      |     322        

谢谢帮助,对不起我的英语)

标签: sqlpostgresqlcreate-tablecalculationcase-when

解决方案


您可以使用case表达式:

select (case when open < close  then 'increasing'
             when open > close  then 'decreasing'
             when open = close  then 'equal'
        end) as grp, count(*)
from t
group by grp;

我不确定“积极”和“消极”应该是什么意思,所以我贴上了对我有意义的标签。

insert您可以使用(如果表已存在)或create table as(如果表不存在)将结果放入新表中。


推荐阅读