0

UNIX 時間による Time フィールドを持つトランザクションをログに記録するテーブルがあるため、各行はトランザクションです。今、私は 1 日で最大のトランザクションを持っているのは何秒かを知りたいですか?

結果は次のようになります。

1-Oct-2013 20:02:34 45 ->(1 日目の 20:02:34 に、最大で 45 のトランザクションがあるなど)
2013 年 10 月 2 日 12:34:21 99
2013 年 10 月 3 日 15:02:33 70

助けてください、事前に感謝します。

4

5 に答える 5

1

それを行う1つの方法

SELECT FROM_UNIXTIME(time) time, MAX(tcount) tcount
  FROM
(
  SELECT time, COUNT(*) tcount
    FROM transactions
   GROUP BY time
) q
 GROUP BY DATE(FROM_UNIXTIME(time))

これがSQLFiddleのデモです


1 日あたりのトップ トランザクションのタイムスタンプをタイで表示できるようにする場合は、DENSE_RANK()分析関数をエミュレートする必要があります。それを行う1つの方法

SELECT FROM_UNIXTIME(a.time) time, a.tcount
  FROM
(
  SELECT time, COUNT(*) tcount
    FROM transactions
   GROUP BY time
) a JOIN 
(
  SELECT DATE(FROM_UNIXTIME(time)) date, MAX(tcount) tcount
    FROM
  (
    SELECT time, COUNT(*) tcount
      FROM transactions
     GROUP BY time
  ) q
   GROUP BY DATE(FROM_UNIXTIME(time))
) b
    ON DATE(FROM_UNIXTIME(a.time)) = b.date
   AND a.tcount = b.tcount;

これがSQLFiddleのデモです

注:この例では、初日のトランザクション数の最大値が同じ 2 つのタイムスタンプがあります。

于 2013-10-04T08:43:48.743 に答える