0

postgresql に対する COUNT + GROUP BY リクエストがあります。

SELECT date_trunc('day', created_at) AS "Day" , 
       count(*) AS "No. of actions" 
FROM events 
WHERE created_at > now() - interval '2 weeks' 
  AND "events"."application_id" = 7 
  AND ("what" LIKE 'ACTION%') 
GROUP BY 1 
ORDER BY 1

私のリクエストは、ID 7 のアプリケーションのイベント テーブル (ログ テーブル) で 1 日あたりの "ACTION*" の数を 2 週間カウントします。

WHERE句が原因であることはわかっているので、JOINリクエストでいくつか試してみましたが、良い答えはありませんでした。

ご協力ありがとうございました

4

2 に答える 2

2

日付表を作成します。

CREATE TABLE "myDates" (
    "DateValue" date NOT NULL
);

INSERT INTO "myDates" ("DateValue") 
select to_date('20000101', 'YYYYMMDD') + s.a as dates from generate_series(0,36524,1) as s(a);

次に、その上に参加しました:

SELECT  d.DateValue AS "Day" , 
        count(*) AS "No. of actions"    
FROM    myDates d left join events e on date_trunc('day', "events"."created_at") = d.DateValue
WHERE   created_at > now() - interval '2 weeks' AND 
        "events"."application_id" = 7 AND 
        ("what" LIKE 'ACTION%') 
GROUP BY 1 ORDER BY 1
于 2013-02-12T17:04:48.843 に答える
0

わかりました友人が私を助けてくれました、ここに答えがあります:

SELECT  "myDates"."DateValue" AS "Day" , 
    (select count(*) from events WHERE   date_trunc('day', "events"."created_at") = "myDates"."DateValue" AND 
    ("events"."application_id" = 4) AND 
    ("events"."what" LIKE 'ACTION%'))  AS "No. of actions"    
FROM    "myDates" 
where ("myDates"."DateValue" > now() - interval '2 weeks') AND ("myDates"."DateValue" < now())

そのため、MyDates テーブルからすべての日付を取得し、2 番目の引数でカウントを取得する必要があります。

于 2013-02-12T17:54:10.660 に答える