現在、さまざまなアイテムのバージョン履歴を追跡する監査ログに取り組んでいます。つまり、実際の変更を、変更の種類 (作成、更新、または削除) を示すマーカーと共に追跡します。
各アイテムには、そのアイテムのステータス (オープン、同意、たぶん) を示す「ステータス」列もあります。
必要なクエリ: 現在までの 1 日あたりのアイテムのステータスの数を取得します。したがって、出力は次のようになります。
day | status | count
---------------------
1 | open | 3
2 | open | 4
2 | maybe | 1
2 | agree | 2
3 | open | 2
3 | agree | 2
等々。wc_audit_log
以下の画像のような監査ログ テーブル ( ) からこのクエリを作成するのに苦労しました。他の列がありますが、ほとんどがテキストであり、このクエリには関係ありません (IMHO :)
group by
と関数のさまざまな組み合わせを試してみましたがorder by
、year, dayofmonth, month
このクエリを組み立てる方法に頭を悩ませているようには見えません。最も厄介な部分は、バージョン管理に関して「日」の境界と重複です。つまり、同じ日にステータスを更新せずにアイテムを複数回更新したり、同じ日に複数のステータスを移行したりすることは完全に可能です。
そのため、ステータス ベースの重複の場合、最新のタイムスタンプ付きアイテムが選択されます。つまり、アイテムが 2 回更新され、ステータスが 2 回とも「オープン」であった場合は、最後の 1 つを選択してください。二重カウントは問題ありません。つまり、アイテムがオープンで、同じ日に合意された場合、両方の場所でカウントされても問題ありません。
ただし、そのようなクエリを組み立てる方法はまだわかりません。上の画像は、関連する列のみのテーブルの一部を表示する必要がありますが、私の意見では、これを重要なクエリにするために必要な重複などのアイデアも提供する必要があります。
PS: 削除済みとしてマークされたアイテムは考慮されないため、上記の表には含まれません。ただし、アイテムが削除されたが「過去」に存在した場合でも、上記は当てはまります。