2009-08-12 7 views
0

私はセッションの数を取得する方法を試してみましょう(失敗します)。私。私は保持を探しています。mySQL - 秒数ごとの結果

私は、セッションがアクティブである秒数で定期的に更新されるテーブルを持っています。

MAX( `時間) - - セッションの秒、すなわち最高数:

は私がのリストを取得したいです。秒:私はfaffingてきた、第2

途中でセッション数は

SELECT `projID`, COUNT(`sessionID`) AS `noSessions`, 
    MAX(`time`) as `endTime` 
FROM `MetricsLive` 
GROUP BY `sessionID` 
ORDER by `endTime` ASC 

である。しかし、それは私が必要なものほど遠いませんが、私は完全に失われていますが生じ

。何か案は?

書式設定を許し: - 私が持っている

表の行データは、AS IS: -

SESSSION \\ SECONDS 
ebsvmcrbob2irbobsrvu2hcfi5 \\ 4 
ebsvmcrbob2irbobsrvu2hcfi5 \\ 12 
ebsvmcrbob2irbobsrvu2hcfi5 \\ 18 
ebsvmcrbob2irbobsrvu2hcfi5 \\ 24 
ebsvmcrbob2irbobsrvu2hcfi5 \\ 32 

などそれは毎回新しいエントリが作成され、新しい行を挿入転がります。ここでのアイデアは、セッションがどれくらいの期間終了したのかを推測することです。だから、私は

NoSessionsEnded \\ ATSECONDS 
4 \\ 12 
8 \\ 24 etc. 
+0

例は一致していないようです。表に列挙した行だけが含まれていると、どのような結果になるでしょうか? – Andomar

答えて

0

の結果をしたいあなたはその上で、あなたのグループ、COUNT(*)は、行の数を返します場合は1970年からの秒数に日付を変換するために、UNIX_TIMESTAMP()関数を使用することができます同第二の共有:

SELECT 
    projID, 
    COUNT(*) AS MaxSessionsPerSecond 
FROM MetricsLive 
GROUP BY UNIX_TIMESTAMP(endTime) 
ORDER BY COUNT(*) DESC 
LIMIT 1 

ORDER BYとLIMIT行は、毎秒最大セッション数とprojIDを選択します。

あなたはプロジェクトごとに最大セッション率を探しているなら、試してください:あなたが与える

SELECT 
    projID, 
    MAX(SessionsPerSecond) as MaxSessionsPerSecond 
FROM (
    SELECT 
     projID, 
     COUNT(*) AS SessionsPerSecond 
    FROM MetricsLive 
    GROUP BY UNIX_TIMESTAMP(endTime) 
) sub 
+0

これは、 'time'がタイムスタンプされたフィールドではないと言って、これをさらに明るくするはずです。単純に数秒です。私。 4,12など – waxical

+0

時間フィールドは何を表していますか?特定の日付以降の秒数ですか?セッションの期間?または、他の何か? – Andomar

+0

。セッションがアクティブである秒数のローリング記録が好きな場合は、セッションに複数のエントリがあります。したがって、セッションの継続時間。 しかし、ローリング中に最後に最も高い数字が必要です(セッションが最後にアクティブに記録されたときなど) – waxical