繁体   English   中英

Postgres:子查询中时间戳的日期分组

[英]Postgres: Date grouping in Subquery from timestamp

我正在尝试找出每天每个列表产生多少线索。

我有这个查询:

SELECT 
    vl.listing_id,
    vl.created_at::date as dt,
    (
        SELECT count(*) 
        FROM voice_leads vl2
        WHERE vl2.listing_id = vl.listing_id 
        AND vl.created_at::date = vl2.created_at::date
    ) as cnt
FROM voice_leads vl
GROUP BY listing_id, vl.created_at::date
ORDER BY listing_id

但是执行时出现“错误:子查询从外部查询第8行使用未分组的列“ vl.created_at”:AND vl.created_at :: date = vl2.created_at :: date”

关于如何解决该问题的任何想法?

SELECT 
    vl.listing_id,
    vl.created_at::date as dt,
    count(cnt.*)
FROM voice_leads vl, lateral (SELECT *
        from voice_leads vl2
        WHERE vl2.listing_id = vl.listing_id 
        AND vl.created_at::date = vl2.created_at::date) cnt
GROUP BY vl.listing_id, vl.created_at::date
ORDER BY listing_id

您不需要子查询:

SELECT 
    vl.listing_id,
    vl.created_at::date as dt,
    count( vl.listing_id ) as cnt
FROM voice_leads vl
GROUP BY listing_id, vl.created_at::date
ORDER BY listing_id

应该做的一样。

count(field)将计算每个组中的行数。

count(*)将计算总行数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM