次の列を持つ MySQL データベースがあります。
ID (INT) 期間 (FLOAT) start_date (DATETIME)
duration 列と start_date 列のモーダル統計 (頻度カウント) を取得したいと考えています。
イベントの期間を頻度で並べ替えるのは簡単です。
SELECT duration, COUNT(duration)
AS frequency
FROM trips
GROUP BY duration
ORDER BY frequency
DESC;
start_date 列で同じクエリを実行すると、次の形式の結果が得られます。
(datetime.datetime(2012, 8, 20, 15, 22), 6L)
(私はデータベースにアクセスするためにpythonを使用しています)。ただし、分単位でビニングされたクエリを受信しても必ずしも役立つとは限りません。月、曜日、時間の方がはるかに役立つクエリです。クエリを次のように変更してみました。
SELECT MONTH(start_date), COUNT(MONTH(start_date))
AS frequency
FROM trips
GROUP BY start_date
ORDER BY frequency
DESC;
ただし、これを行うと、SQL 構文に関するエラーが発生し始めます (エラー 1064)。残念ながら、エラーが何であるかを理解することはできませんでした。
年、月、曜日、時、分などを別の列に入れることを検討しましたが、クエリ内の日時フィールドのサブフィールドを選択できるようにする必要があると思います。
ありがとう!