2017-08-24 14 views
0

私はこのようなデータを含む複数のmysql DBを持っています。 http://sqlfiddle.com/#!9/f084cMysqlは1日に1つの行を選択します。

CREATE TABLE `datos` (
    `id` int(11) NOT NULL, 
    `fecha` datetime NOT NULL, 
    `temperatura` tinyint(4) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

INSERT INTO `datos` (`id`, `fecha`, `temperatura`) VALUES 
(1874, '2017-05-20 01:56:40', 20), 
(1875, '2017-05-20 01:56:51', 20), 
(1876, '2017-06-18 23:32:49', 17), 
(1877, '2017-06-18 23:34:50', 17), 
(1878, '2017-06-18 23:36:51', 17), 
(1879, '2017-06-18 23:38:52', 17), 
(1880, '2017-06-18 23:46:02', 16), 
(1881, '2017-06-18 23:47:12', 17), 
(1882, '2017-06-22 01:06:27', 21); 

私は

SELECT * FROM `datos` WHERE fecha >= '2017-06-22 01:06:27' - INTERVAL 30 DAY 
を使用して、全区間を選択している。この

2017-06-22 01:06:27 21 
2017-06-18 23:47:12 17 
2017-05-20 01:56:51 20 

のような結果を持つことが、30日の期間中に一日のちょうど一つの値を選択したい

しかし、私はすべての代わりに1日に1つの値を選択するだけでは管理していません。 は、あなたが優先順位付けしたい行のどのようなプロパティを選択し、一致のあなたの条件を操作することができ、ヘルプ

+0

GROUP BYについて学ぶ必要があると思われます。これは一般的なSQL操作であり、SQLのリファレンスまたはチュートリアルでは説明と例が示されます。たとえば、https://dev.mysql.com/doc/refman/5.7/en/group-by-functions-and-modifiers.htmlとそのサブセクションを参照してください。 –

+0

私は30日の妥当性を理解していません。おそらくデータセットはそれほど代表的ではありません – Strawberry

答えて

1

リストされた結果に基づいて、毎日最大のfechaが必要なように見えます。

select date(fecha), max(fecha) 
from datos 
group by date(fecha) 

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

2017-06-22 2017-06-22 01:06:27 
2017-06-18 2017-06-18 23:47:12 
2017-05-20 2017-05-20 01:56:51 

テーブルとして上記のクエリを処理し、あなたが完全な記録を得ることができますバックdatosテーブルにそれに参加することで:ID、fecha、および温度を毎日最大のフェチャを有していた。

select d1.* 
from datos d1, 
(select date(fecha), max(fecha) as max_fecha 
from datos 
group by date(fecha)) d2 
where d1.fecha = d2.max_fecha 
and d1.fecha >= '2017-06-22 01:06:27' - INTERVAL 30 DAY 
以下に結果の

:私は、mysqlデータベースへのアクセス権を持っていないので、私が最初のOracleで解決

1875 2017-05-20 2017-05-20 01:56:51 20 
1881 2017-06-18 2017-06-18 23:47:12 17 
1882 2017-06-22 2017-06-22 01:06:27 21 

ますが、私は私が正しくMySQLで動作するようにクエリを変更すると信じて。

0
select a.* 
from datos a 
    left outer join datos b 
    on substr(a.fecha,1,10) = substr(b.fecha,1,10) and a.id < b.id 
where b.id is null 

をお願い申し上げます。

関連する問題