0

このような質問がすでにあるかどうかはわかりませんが、解決策が見つかりませんでした。これが重複している場合は申し訳ありません。日付のあるテーブルがあります。

  |date (date)| tax (numeric) |  (stuff in brackets is the type)
  |2012-12-12 | 5.00          |
  |2012-12-12 | 10.00         |
  |2012-12-13 | 2.00          |

出力を次のようにしたいと思います。

  |date (date)| tax (numeric) |  (stuff in brackets is the type)
  |2012-12-12 | 15.00         |
  |2012-12-13 | 2.00          |

CTEタイプのクエリを実行することを考えていたのは、日付ベースで、タイムゾーンのない日時として物事を保存し、税金がたくさんあるためです。これが私のクエリの始まりです。

 with date_select as
 (
 select CAST(r.datetime as DATE), sum(r.tax) as tax
 from suezensalon.receipt r
 where r.datetime between '2012-12-12 00:00:00' and '2012-12-18 23:59:59'
 group by r.datetime  
 order by r.datetime
 )

これは私にトップテーブルを与えます。これを行うための最良の方法は何ですか?「日付の平均化」によるものですか?

4

2 に答える 2

1

これが最終的に機能したものです:

 with date_select as
 (
 select CAST(r.datetime as DATE), sum(r.tax) as tax
 from suezensalon.receipt r
 where r.datetime between '2012-12-12 00:00:00' and '2012-12-18 23:59:59'
 group by r.datetime  
 order by r.datetime 
 ) 
 select extract(Month from datetime) || '-' || extract(Day from datetime) || '-' ||   extract(Year from datetime) as Date, sum(tax)
 from date_select
 group by Date
order by Date;
于 2012-12-21T02:37:10.010 に答える
0

最も単純なオプションであり、インデックスが存在する場合にうまく機能する可能性が最も高いのは、次のようなものだと思います。

SELECT
    datetime::date as "Date",
    sum(tax)
  FROM suezensalon.receipt
  WHERE datetime >= '2012-12-12 00:00:00'
    AND datetime <  '2012-12-19 00:00:00'
  GROUP BY datetime::date
  ORDER BY "Date";
于 2012-12-21T04:18:27.180 に答える