我正在尝试使用SQLite对销售数据进行一些分析。
目前,我的表格包含多个列,包括unique transaction ID
,product name
,quantity of that product
和value of that product
。对于每个事务,可以有多个记录,因为购物篮中的每个不同类型的产品都有自己的条目。
我想在表格中添加两个新列。第一个是total for each transaction ID
,它总结了该篮子中所有产品的总量。
我意识到表中会有重复,因为重复的事务ID都会有总数。第二个是相似但价值方面。
遗憾的是,我无法通过创建一个包含我想在Excel中计算的值的新表,然后将其连接到原始表,因为Excel的记录太多了。
有没有办法让SQL在Excel中执行相当于sumif
的工作?
我正在思考以下几点:
select sum(qty) where uniqID = ...
但我很难说如何表达它需要将uniqID与该记录中的那个相同的所有数量相加。
答案 0 :(得分:2)
您不会在SQL中创建类似的列。您只需动态查询总数即可。如果你真的想要一个类似于表的对象,你可以创建一个包含2列的视图; uniqID和该ID的总和。
让我们在表格中设置一些虚拟数据; a列是你的uniqID,b是你要求的值。
create table tab1 (a int, b int);
insert into tab1 values (1,1);
insert into tab1 values (1,2);
insert into tab1 values (2,10);
insert into tab1 values (2,20);
现在,您可以对单个uniqID进行简单查询,如下所示:
select sum(b) from tab1 where a = 2;
30
或所有uniqID的总和('group by'子句可能就是你正在摸索的:):
select a, sum(b) from tab1 group by a;
1|3
2|30
可以将其包装为视图:
create view totals as select a, sum(b) from tab1 group by a;
select * from totals;
1|3
2|30
视图将动态更新:
insert into tab1 values (2,30);
select * from totals;
1|3
2|60
在进一步的查询中,对于分析,您可以像使用表格一样使用“总计”。