我有多个订单的参与者。我可以很容易地找到过去的订单数量,但必须使用联接来计算过去的参与者。我使用的代码没有给我正确的数字。代码是:
select count(distinct o.participant_id)
from dbaq.participant p, dbaq.orders o
where o.participant_id=p.participant_id and
(p.water_staff=1) and p.active = '1' and
date_part('year', o.order_date) = 2018;
我弄清楚为什么这不起作用......当我看到过去的每一年时,活跃参与者的数量会下降...因为他们正在离开而不再活跃。我认为没有办法追踪过去活跃的人。感谢您的意见 - 下面提出了很好的建议。
答案 0 :(得分:0)
我想你想找到今年活跃订单的参与者数量。我对吗?如果是,你可以尝试
SELECT o.participant_id,
COUNT(*)
FROM dbaq.participant p,
dbaq.orders o
WHERE o.participant_id = p.participant_id
AND p.water_staff = 1
AND p.active = '1'
AND extract(YEAR FROM o.order_date) = '2018'
group by o.participant_id;
答案 1 :(得分:0)
试试这个:
SELECT
COUNT(DISTINCT o.participant_id)
FROM
dbaq.orders o
JOIN
dbaq.participant p
ON
o.participant_id = p.participant_id
WHERE
p.water_staff = 1
AND
p.active = '1'
AND
DATE_PART('year', o.order_date) = 2018;