首页 > 解决方案 > 检查值是否存在但不对其进行分组

问题描述

我正在从这样的表中创建一个视图:

name        lastname        state       number_1        number_2
john        dal             TX          100             200
dave        pop                         100             300
tom         kim             LA          300             600
kyle        rom                         50              10  
kyle        rom             LA          50              10            

我正在尝试相乘number_1number_2有一列说明是否state存在但不按其分组:

SELECT name, lastname, number_1*number_2 as product,
CASE 
WHEN state IS NOT NULL 
THEN True 
ELSE False 
END AS state_present
GROUP BY name, lastname

当我运行它时,我得到状态需要在聚合函数中使用,我想要的结果如下所示:

name        lastname       product         state_present       
john        dal            200000          True
dave        pop            300000          False
tom         kim            1800000         True          
kyle        rom            500             False  
kyle        rom            500             True 

标签: sqlpostgresqlgroup-by

解决方案


这回答了问题的原始版本。

您是否正在寻找带有一些表达式的简单选择?

select name, lastname, (number_1 * number_2) as product,
       (state is not null) as state_present
from t;

您的问题似乎有点误导,因为它提到了聚合,但我根本不知道这将如何应用。


推荐阅读