10

過去12か月のデータをdbから取得したいのですが、そのためのクエリを作成しましたが、カウントと月のみを提供し、年はどの年に関連する月を意味します。

私のSQL:

Select count(B.id),date_part('month',revision_timestamp) from package AS
 A INNER JOIN  package_revision AS B ON A.revision_id=B.revision_id 
 WHERE  revision_timestamp > (current_date - INTERVAL '12 months') 
GROUP BY  date_part('month',revision_timestamp)

このような出力が得られます

 month | count 
-------+-------
     7 |     21
     8 |      4
     9 |     10

しかし、私は7 - 2012のような月の年、または他の列の年が必要です。

4

2 に答える 2

16

私はあなたがこれを望んでいたと信じています:

SELECT to_char(revision_timestamp, 'YYYY-MM'),
       count(b.id)
FROM package a
JOIN package_revision b ON a.revision_id = b.revision_id
WHERE revision_timestamp >
      date_trunc('month', CURRENT_DATE) - INTERVAL '1 year'
GROUP BY 1
于 2013-09-04T06:52:28.300 に答える
6
select
    count(B.id),
    date_part('year', revision_timestamp) as year,
    date_part('month',revision_timestamp) as month
from package as A
    inner join package_revision as B on A.revision_id=B.revision_id 
where
    revision_timestamp > (current_date - INTERVAL '12 months') 
group by
    date_part('year', revision_timestamp)
    date_part('month', revision_timestamp)

また

select
    count(B.id),
    to_char(revision_timestamp, 'YYYY-MM') as month
from package as A
    inner join package_revision as B on A.revision_id=B.revision_id 
where
    revision_timestamp > (current_date - INTERVAL '12 months') 
group by
    to_char(revision_timestamp, 'YYYY-MM')

でフィルタリングするrevision_timestamp > (current_date - INTERVAL '12 months')と、昨年の現在の日付から範囲が取得されることに注意してください (したがって、今日が'2013-09-04'からの範囲を取得します'2012-09-04')

于 2013-09-04T06:52:18.440 に答える