2013-10-04 2 views
0

테이블에 UNIX 시간으로 시간 필드가있는 트랜잭션이 기록되므로 각 행이 트랜잭션입니다. 이제 하루에 최대 거래가있는 초를 찾고 싶습니다.하루 최대 합계를 선택하십시오.

결과는 같아야합니다

 
1-Oct-2013 20:02:34 45 ->(in day 1, at 20:02:34, we have 45 transaction for maximum, so on) 
2-Oct-2013 12:34:21 99 
3-Oct-2013 15:02:33 70 

이 도와주세요, 사전에 감사합니다.

+0

을에서 트랜잭션의 수와 동일한 최대 값을 갖는 두 개의 타임 스탬프를 가지고 당신은 무엇을 시도 했습니까? 그리고 당신은 어디서 붙어 있었습니까? –

답변

0

쿼리를 아래와 같이 시도

Select time, Max(count) as max_count from (
SELECT Date_format(from_unixtime(unix_timestamp_column), '%Y-%m-%d') as date, 
     from_unixtime(unix_timestamp_column) as time, 
     count(*) as count 
from your_table group by time) a group by Date 
0
  • 첫째, 시간의 독특한 기록을 얻을

테이블 _ 구별 your_time_column_name을 선택;

  • 후 동일한 시간에 기록을 확인한까지 루프 : TABLE_NAME FROM

SELECT * your_time_column_name는 최대 카운트 발견 "시간"다음

  • 를 =
0
SELECT MAX(COUNT_NO), TIME_COLUMN FROM (SELECT COUNT(*) COUNT_NO ,TIME_COLUMN FROM  
TABLE_NAME 
GROUP BY TIME_COLUMN) 

시험해보세요.

0
select yourtimecolumn,max(totalTrans) from (
select yourtimecolumn, count(id) as totalTrans 
    from yourtable 
    group by yourtimecolumn)a 
group by day(yourtimecolumn) 
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 이제 다음 관계로 하루에 최고 거래를위한 타임 스탬프를 볼 수 있도록하려면 데모


DENSE_RANK() 분석 함수를 에뮬레이션해야합니다. 한 가지 방법은

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 데모

참고 :이 예에서는 먼저 일

+0

@ user2845662 도움이 되었습니까? 질문에 대한 도움이 더 필요하십니까? – peterm

관련 문제