【发布时间】:2014-09-07 10:47:34
【问题描述】:
我正在尝试在单个 SQL 查询中跨多个表使用多个聚合函数(使用 Postgres)。
我的表格结构类似于以下:
CREATE TABLE user (user_id INT PRIMARY KEY, user_date_created TIMESTAMP NOT NULL);
CREATE TABLE item_sold (item_sold_id INT PRIMARY KEY, sold_user_id INT NOT NULL);
CREATE TABLE item_bought (item_bought_id INT PRIMARY KEY, bought_user_id INT NOT NULL);
我想计算每个用户购买和出售的商品数量。我想出的解决方案不起作用:
SELECT user_id, COUNT(item_sold_id), COUNT(item_bought_id)
FROM user
LEFT JOIN item_sold ON sold_user_id=user_id
LEFT JOIN item_bought ON bought_user_id=user_id
WHERE user_date_created > '2014-01-01'
GROUP BY user_id;
这似乎执行 (item_sold_id, item_bought_id) 的所有组合,例如如果有 4 个卖出和 2 个买入,两个 COUNT() 都是 8。
如何正确查询表以获得两个计数?
【问题讨论】:
标签: sql postgresql join left-join aggregate-functions