【发布时间】:2022-08-19 21:03:09
【问题描述】:
你好吗?
我有一个包含 DATE、TICKET_ID(交易 ID)和 PRODUCT_ID(已售产品)的销售表。我想要一份 PER DAY 一起售出的商品清单(即今天产品 X 和产品 Y 售出 10 次,昨天产品 X 和产品 Y 售出 5 次......)
我有这段代码,但是它有两个问题:
1-生成反向重复。例子:
product_id product_id_bought_with counting
12345 98765 130
98765 12345 130
abcde fghij 88
fghij abcde 88
2-此代码在没有数据列的情况下运行良好。输入后数据量要大得多,并且出现限制错误。\"查询执行期间资源超出:无法在分配的内存中执行查询。峰值使用量:限制的 152%。顶级内存使用者:ORDER BY 操作:99% 其他/未归因:1%\"
我的代码:
SELECT
c.DATE,
c.product_id,
c.product_id_bought_with,
count(*) counting
FROM ( SELECT a.DATE, a.product_id, b.product_id as product_id_bought_with
FROM `MY-TABLE` a
INNER JOIN `THE-SAME-TABLE` b
ON a.ID_TICKETS = b.ID_TICKETS
AND a.product_id != b.product_id
AND a.DATE = b.DATE
) c
GROUP BY DATE, product_id, product_id_bought_with
ORDER BY counting DESC
我对如何做到这一点持开放态度。提前致谢!
编辑:示例示例
CREATE TABLE `project_id.dataset.table_name` (
DAT_VTE DATE,
ID_TICKET STRING,
product_id int
);
INSERT INTO `project_id.dataset.table_name` (DAT_VTE, ID_TICKET, product_id)
VALUES
(DATE(\'2022-01-01\'), \'123_abc\', 876123),
(DATE(\'2022-01-01\'), \'123_abc\', 324324),
(DATE(\'2022-01-02\'), \'456_def\', 876123),
(DATE(\'2022-01-02\'), \'456_def\', 324324),
(DATE(\'2022-01-02\'), \'456_def\', 432321),
(DATE(\'2022-05-23\'), \'987_xyz\', 876123),
(DATE(\'2022-05-23\'), \'987_xyz\', 324324)
-
你能提供你正在使用的样本数据吗?
-
当然!请检查更新的描述 =)
标签: sql google-bigquery