过去加入表和计数参与者

时间:2018-02-05 19:03:54

标签: sql postgresql

我有多个订单的参与者。我可以很容易地找到过去的订单数量,但必须使用联接来计算过去的参与者。我使用的代码没有给我正确的数字。代码是:

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;

我弄清楚为什么这不起作用......当我看到过去的每一年时,活跃参与者的数量会下降...因为他们正在离开而不再活跃。我认为没有办法追踪过去活跃的人。感谢您的意见 - 下面提出了很好的建议。

2 个答案:

答案 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;