簡體   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