2

pageviews次の(左) とdaterange(右) の表を検討してください。

_date       pageviews       _date
---------------------       ----------
2011-01-01  21331           2011-01-01
2011-01-02  32143           2011-01-02
2011-01-04  23434           2011-01-03
.                           .
.                           .
2011-08-30  32322           2011-08-30

テーブルには、対応する Web サイトのページビューを含む日付が含まれています。ページビューがない日があることに注意してください ( など2011-01-03)。

必要なのは、その月の 1 日あたりの合計ページビュー数をカウントするクエリです。したがって、1 月 1 日 + 2 月 1 日 + ... + 11 月 1 日のページビュー数を最初の値として追加し、次に 1 月 2 日 + 2 月 2 日 + ... 2 月 3 日を 2 番目の値として追加する必要があります。したがって、クエリの出力は 31 日 (1 から 31 の番号が付けられます) になり、対応する合計ページビュー数になります。

どのように始めればよいかわかりません。とdaterangeの間のすべての日付を保持するテーブルを作成して、CAOLECCE を実行し、テーブルにない日に対して 0 を返すことができるようにしました。しかし、私はそこからかなり迷っています。2011-01-012011-08-30pageviews

これを解決する方法を知っていますか?どんな助けでも大歓迎です:-)

4

3 に答える 3

3
SELECT DAY(_date),SUM(pageviews) FROM pageviews GROUP BY DAY(_date)

上記のクエリで問題が解決することを願っています。

于 2012-08-16T11:13:34.030 に答える
2

これがあなたが探しているものだと思います:

SELECT a._date, SUM(IFNULL(b.pageviews, 0)) AS total_pageviews
FROM daterange a
     LEFT JOIN pageviews b
         ON DAYOFMONTH(a._date) = DAYOFMONTH(b._date)
GROUP BY DAYOFMONTH(a._date) 
ORDER BY a._date;
于 2012-08-16T11:13:22.680 に答える
1

このようなもの?

SELECT DAY(daterange._date),SUM(pageviews)
FROM daterange 
LEFT JOIN pageviews ON daterange._date = pageviews._date
GROUP BY DAY(daterange._date)
于 2012-08-16T11:16:24.933 に答える