加入桌子并计算过去的参与者



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

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;

我弄清楚了为什么这不起作用...当我看着过去的每个年份时,活跃参与者的数量会降低……因为他们要离开并且不再活跃。我认为没有一种方法可以跟踪谁活跃。不过,感谢您的意见 - 下面的很棒建议。

我想您想在今年找到有效订单的参与者人数。我对吗?如果是,您可以尝试

 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;

尝试以下:

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;

最新更新