0

これが私のMysqlクエリです

SELECT COUNT(*) CallCnt,ANBCnt, t2.Duration,(ANB) Number,
  ((DATE_SUB('2012-12-10 05:22:30',
              INTERVAL (SELECT CONCAT(''',t2.Duration:0,''')) MINUTE_SECOND))) Mintime,
  ('2012-12-10 05:22:30') Maxtime,
  (1) TYPE,
  (t1.CallTypeId) 
FROM cdr_temp1_check t1
  INNER JOIN cdr_temp1_check_details t2 
  ON t1.CallTypeId=t2.CallTypeId
WHERE TimeStamp1 >= DATE_SUB('2012-12-10 05:22:30',
                              INTERVAL (SELECT CONCAT(''',t2.Duration:0,''')) MINUTE_SECOND) 
  AND TimeStamp1<='2012-12-10 05:22:30'
GROUP BY ANB 
  HAVING COUNT(*) > ANBCnt

返される結果は

    CallCnt  ANBCnt  Duration      Number  Mintime              Maxtime                TYPE  CallTypeId
-------  ------  --------  ----------  -------------------  -------------------  ------  ----------
    267      40        25      2042011234  2012-12-10 05:20:30  2012-12-10 05:22:30       1           5
    134      20        15      9895697970  2012-12-10 05:20:30  2012-12-10 05:22:30       1           3

期待される結果

    CallCnt  ANBCnt  Duration      Number  Mintime              Maxtime                TYPE  CallTypeId
-------  ------  --------  ----------  -------------------  -------------------  ------  ----------
    267      40        25      2042011234  2012-12-10 04:57:30  2012-12-10 05:22:30       1           5
    134      20        15      9895697970  2012-12-10 04:57:30  2012-12-10 05:22:30       1           3

問題を示す列は、あるべき最小時間ですMaxtime minus Duration

4

1 に答える 1

0

別のアプローチを試すことをお勧めします。

maxtimeは、クエリに入力する文字列にすぎません。DATE_SUBを使用して、目的の間隔を直接差し引くことができます

((DATE_SUB('2012-12-10 05:22:30',
INTERVAL t2.Duration MINUTE))) Mintime

したがって、クエリ全体は次のようになります。

SELECT COUNT(*) CallCnt,ANBCnt,
t2.Duration,(ANB) Number,
((DATE_SUB('2012-12-10 05:22:30',
INTERVAL t2.Duration MINUTE))) Mintime,
('2012-12-10 05:22:30') Maxtime,(1) TYPE,
(t1.CallTypeId) FROM cdr_temp1_check t1
INNER JOIN cdr_temp1_check_details t2 ON t1.CallTypeId=t2.CallTypeId
WHERE TimeStamp1>=DATE_SUB('2012-12-10 05:22:30',
INTERVAL t2.Duration MINUTE) 
AND TimeStamp1<='2012-12-10 05:22:30'
GROUP BY ANB HAVING COUNT(*)>ANBCnt
于 2012-12-14T13:35:55.253 に答える