【发布时间】:2015-11-19 12:37:19
【问题描述】:
我有一个交易表,其中包含买家和卖家字段。我想要一个查询,它为参与交易的每个人输出一行,其中一列表示该人已成为买方的次数,另一列表示该人已成为卖方的次数。
我目前正在实现我想要的结果:
SELECT u.user_id,
(SELECT COUNT(*) FROM transactions AS b WHERE b.buyer = u.user_id),
(SELECT COUNT(*) FROM transactions AS s WHERE s.seller = u.user_id)
FROM users AS u;
这很好用,但它让我觉得愚蠢和不必要的缓慢。当我开始想设置条件时——例如,如果我想计算一个人在 3 月 1 日到 3 月 31 日期间以低于 1 美元的价格购买或出售铅笔的次数——那么查询就变得更加愚蠢了。
我确信有更好的方法,但我花了一段时间搜索并没有想出太多。提前感谢您的帮助。
【问题讨论】:
标签: sql performance postgresql sqlperformance