1

次の列を持つ 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)。残念ながら、エラーが何であるかを理解することはできませんでした。

年、月、曜日、時、分などを別の列に入れることを検討しましたが、クエリ内の日時フィールドのサブフィールドを選択できるようにする必要があると思います。

ありがとう!

4

1 に答える 1

1

start_date 月のカウント頻度:

SELECT YEAR(start_date), MONTH(start_date), COUNT(*) AS frequency
FROM trips
GROUP BY YEAR(start_date), MONTH(start_date)
ORDER BY frequency DESC;

持続時間の頻度を数える:

SELECT duration, COUNT(*) AS frequency
FROM trips
GROUP BY duration
ORDER BY frequency DESC;
于 2012-10-17T15:44:34.927 に答える