2017-01-23 13 views
0

を得ることができない選択:はMAX、MIN関数は、私は、このテーブルを持って正しい結果

CREATE TABLE data ( 
    timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, 
    channel INTEGER DEFAULT '0', 
    raw_Value REAL  DEFAULT '0', 
    modify REAL  DEFAULT '0' 
); 

私は結果がこのクエリで正しい結果

SELECT 
    (SELECT TIMESTAMP 
     WHERE value= 
     (SELECT max(value))) AS maxDate 
FROM 
     (SELECT *,raw_value AS value 
     FROM DATA 
     WHERE TIMESTAMP>='2017-01-23 00:00:00' 
     AND TIMESTAMP<'2017-01-24 00:00:00' 
     AND channel=0); 

を得ることができます

maxDate 
------------------- 
2017-01-23 16:47:00 

このクエリを使用すると、結果はNULLです。

SELECT 
    (SELECT TIMESTAMP 
    WHERE value= 
    (SELECT max(value))) AS maxDate, 

    (SELECT TIMESTAMP 
    WHERE value= 
    (SELECT min(value))) AS minDate 
FROM 
    (SELECT *,raw_value AS value 
    FROM DATA 
    WHERE TIMESTAMP>='2017-01-23 00:00:00' 
    AND TIMESTAMP<'2017-01-24 00:00:00' 
    AND channel=0); 

結果は次のとおりです。

maxDate  minDate 
---------- ------------------- 
      2017-01-23 12:32:00 

私はこのクエリを使用する場合、単に変更された順:

SELECT 
    (SELECT TIMESTAMP 
    WHERE value= 
    (SELECT min(value))) AS minDate, 

    (SELECT TIMESTAMP 
    WHERE value= 
    (SELECT max(value))) AS maxDate 


FROM 
    (SELECT *,raw_value AS value 
    FROM DATA 
    WHERE TIMESTAMP>='2017-01-23 00:00:00' 
    AND TIMESTAMP<'2017-01-24 00:00:00' 
    AND channel=0); 

は今、私はこれを取得:

minDate  maxDate 
---------- ------------------- 
      2017-01-23 16:47:00 

私は何かを逃していますか?

+1

あなたがやろうとしているかを説明してください。 –

+0

私は最大値と最小値の発生時刻を取得する予定です –

答えて

0
だけの参加についてどのように

group by

SELECT t.timestamp, t.value 
FROM (SELECT value, MIN(TIMESTAMP) as min_timestamp, MAX(TIMESTAMP) as max_TIMESTAMP 
     FROM DATA 
     WHERE TIMESTAMP >= '2017-01-23 00:00:00' AND 
      TIMESTAMP < '2017-01-24 00:00:00' AND 
      channel = 0 
    ) tt JOIN 
    DATA t 
    ON t.TIMESTAMP IN (min_timestamp, max_timestamp) 
WHERE t.channel = 0; 
関連する問題