すべてのSQLプロにとって、ここに挑戦します: 私は関心の2つの列、グループ、および誕生日を持つテーブルを持っています。一部の行だけにグループが割り当てられています。 私は今、生年月日でソートされたすべての行を印刷したいと思いますが、同じグループのすべての行が互いに隣り合っているようにしたいと思います。これを行う半賢明な唯一の方法は、ソート時にグループ内のすべての行のグループの平均誕生日を使用することです。質問は、これは純粋なSQL(この例ではMySQL)で行うことができますか、またはいくつかのスクリプトロジックが必要となるでしょうか?SQLを使っていくつかの行を平均で並べ替える
id | group | birthdate
---+-------+-----------
1 | 1 | 1989-12-07
2 | NULL | 1990-03-14
3 | 1 | 1987-05-25
4 | NULL | 1985-09-29
5 | NULL | 1988-11-11
をして(これは見つけることができるのは、1987年5月25日および1989年12月7日の「平均」は1988年8月30日であることを言わせて:指定したテーブルで、説明するために
UNIXのタイムスタンプに相当する日付を平均して日付に変換することで、この平均値は完全に正しいとは限りません)。 出力は次のようになります。
id | group | birthdate | [sort_by_birthdate]
---+-------+------------+--------------------
4 | NULL | 1985-09-29 | 1985-09-29
3 | 1 | 1987-05-25 | 1988-08-30
1 | 1 | 1989-12-07 | 1988-08-30
5 | NULL | 1988-11-11 | 1988-11-11
2 | NULL | 1990-03-14 | 1990-03-14
任意のアイデア?
乾杯、 ジョン
ですからによってソートしたいです同じグループに属する誕生日の平均?誰かがあなたの例で '1988-08-30'の誕生日を持っている場合、私はあなたの注文が保存されるかどうかわかりません –
' 1988-08-30 'を持つ人は、グループ...私はこれが純粋なSQLでやるのは難しいことだと分かりますが、ちょうど=)の場合にのみ質問します。 –
あなたはORDER BYグループ、生年月日はできませんか? – landoncz