次の 2 つのステートメントは両方とも、Postgres でエラーを生成します。
SELECT substring(start_time,1,8) AS date, count(*) as total from cdrs group by date;
SELECT substring(start_time,1,8) AS date, count(*) as total from cdrs group by substring(start_time,1,8);
エラーは次のとおりです。
列「cdrs.start_time」は、GROUP BY 句に指定するか、集計関数で使用する必要があります
postgres のドキュメントを読んだところ、SELECT と GROUP BY の両方でpostgres 8.3 SELECT式 を使用できることがわかりました。
start_time フィールドは文字列で、ccyymmddHHMMSS の形式の日付/時刻を持ちます。mySQL では、望ましい結果と期待される結果の両方が生成されます。
+----------+-------+
| date | total |
+----------+-------+
| 20091028 | 9 |
| 20091029 | 110 |
| 20091120 | 14 |
| 20091121 | 4 |
+----------+-------+
4 rows in set (0.00 sec)
Postgres (heroku) に固執する必要があります。助言がありますか?
ps GROUP BY に欠落している項目や、mySQL がこれを受け入れる理由、他の人が受け入れない理由など、他にも多くの議論があります... SQL 仕様への厳密な順守などですが、これは1062158/converting- mysql-select-to-postgresqlおよび1769361/postgresql-group-by-different-from-mysqlを参照して、別の質問を保証してください。