【发布时间】:2014-04-05 15:26:39
【问题描述】:
我正在尝试将每个事件包含多行的表压缩为一个较小的表,该表包含每个事件中的关键子事件的计数。事件是基于跨列的唯一组合定义的。
作为一个具体的例子,假设我有以下数据,涉及客户在不同日期访问不同商店并购买不同商品:
cust date store item_type
a 1 Main St 1
a 1 Main St 2
a 1 Main St 2
a 1 Main St 2
b 1 Main St 1
b 1 Main St 2
b 1 Main St 2
c 1 Main St 1
d 2 Elm St 1
d 2 Elm St 3
e 2 Main St 1
e 2 Main St 1
a 3 Main St 1
a 3 Main St 2
我想将数据重组为一个表格,该表格包含给定日期的每次客户访问的一行,并具有适当的计数。我正在尝试了解如何使用 SQLite 将其压缩为:
Index cust date store n_items item1 item2 item3 item4
1 a 1 Main St 4 1 3 0 0
2 b 1 Main St 3 1 2 0 0
3 c 1 Main St 1 1 0 0 0
4 d 2 Elm St 2 1 0 1 0
5 e 2 Main St 2 2 0 0 0
6 a 3 Main St 2 1 1 0 0
对于这个简单的示例,我可以在 excel 中执行此操作(按照建议的here 以 sumproduct(cutomer * date) 开头,然后是此列上的累积总和以生成索引,然后是 countif 和 countifs 以生成所需的计数)。
Excel 不太适合对数千行执行此操作,因此我正在寻找使用 SQLite 的解决方案。
很遗憾,我的 SQLite 功夫很弱。
我认为this 是我找到的最接近的,但我无法准确理解如何调整它。
当我尝试一种更基本的方法来开始生成唯一索引时:
CREATE UNIQUE INDEX ui ON t(cust, date);
我明白了:
Error: indexed columns are not unique
我将不胜感激任何有关从哪里开始的帮助。非常感谢!
【问题讨论】: