Sql 具有相同值的行之间的差异
我有桌子Sql 具有相同值的行之间的差异,sql,rows,difference,Sql,Rows,Difference,我有桌子 create table fct_bonus ( date timestamp not null, type varchar(10) not null, amount numeric(19,2) not null, userid varchar(30) not null ) 类型可以是输入或输出,金额始终大于0 我需要找到2016-08-01'日期的userid 123的输入和输出的总和,以及balan,它应该算作所有输入减去userid 123的所有
create table fct_bonus (
date timestamp not null,
type varchar(10) not null,
amount numeric(19,2) not null,
userid varchar(30) not null
)
类型可以是输入或输出,金额始终大于0
我需要找到2016-08-01'日期的userid 123的输入和输出的总和,以及balan,它应该算作所有输入减去userid 123的所有输出。
我使用这个查询
select distinct userid, type, sum(amount)
from fct_bonus
where userid = 123 and date <= '2016-08-01'
group by type
选择不同的用户ID、类型、总和(金额)
来自fct_奖金
其中userid=123和date似乎与您描述的相同:
select userid,
sum(case when type = 'IN' then 1 else 0 end) as ins,
sum(case when type = 'OUT' then 1 else 0 end) as outs,
sum(case when type = 'IN' then amount when type = 'OUT' then - amount end) as balance
from fct_bonus
where userid = 123 and date <= '2016-08-01'
group by userid;
选择userid,
sum(类型为'IN'时为1,否则为0)作为ins,
求和(当类型为'OUT'时,则为1,否则为0结束)作为OUT,
作为余额的总和(当类型为“IN”时为“case”,当类型为“OUT”时为“amount”,当类型为“OUT”时为“amount end”)
来自fct_奖金
其中userid=123和date编辑您的问题并(1)提供示例数据;(2) 预期结果;和(3)标记你正在使用的数据库。非常感谢,这很有帮助!