mysql テーブルにランダムなエントリを持つ DATETIME フィールドがあります。オブジェクト グループを選択し、4 時間のギャップがあるときにそれらを分割したいと考えています。理想的には、配列 (またはサブグループ?) 内の各グループ内のすべての ID を返すことができます。
これは私の SQL スキルを超えているようです。
興味深い解決策はありますか?
MySQLDATE_FORMAT
句を使用できます。
例
SELECT CAST(DATE_FORMAT(date,'%Y-%m-%d %k:00:00') AS DATETIME) hour
FROM table
WHERE date = CURRENT_DATE - INTERVAL 4 HOUR
GROUP BY CAST(DATE_FORMAT(date,'%Y-%m-%d %k:00:00') AS DATETIME)
SQL はデータに対してセット操作を実行することを目的としていますが、求めているのは順次処理です。
そのため、SQL をひねってこれを実行しようとするのではなく、順次処理することをお勧めします。基本的な選択肢は 2 つあります。
カーソルを使用して結果を処理し、ストアド プロシージャでテーブルからデータを選択します。
選択した外部のスタンドアロン言語 (Java、C#、Python、PHP など、ボートに浮かぶものは何でも) から select ステートメントを実行し、そこでデータを適切にグループ化します。