Als intro:
Ik gebruik Mysql op OpenBSD 4 op Intel
De database opbouw is als volgt:
CREATE TABLE `weatherinfo` (
`timestamp` bigint(14) NOT NULL default '0',
`rec_date` char(13) NOT NULL default '00-00-0000',
`rec_time` time NOT NULL default '00:00:00',
`temp_in` decimal(3,1) NOT NULL default '0.0',
`temp_out` decimal(3,1) NOT NULL default '0.0',
`dewpoint` decimal(3,1) NOT NULL default '0.0',
`rel_hum_in` tinyint(3) NOT NULL default '0',
`rel_hum_out` tinyint(3) NOT NULL default '0',
`windspeed` decimal(3,1) NOT NULL default '0.0',
`wind_direction` char(3) NOT NULL default '',
`wind_angle` decimal(3,1) NOT NULL default '0.0',
`wind_chill` decimal(3,1) NOT NULL default '0.0',
`rain_1h` decimal(5,1) NOT NULL default '0.0',
`rain_24h` decimal(5,1) NOT NULL default '0.0',
`rain_1w` decimal(6,1) NOT NULL default '0.0',
`rain_1m` decimal(6,1) NOT NULL default '0.0',
`rain_total` decimal(7,1) NOT NULL default '0.0',
`rel_pressure` decimal(7,1) NOT NULL default '0.0',
`abs_pressure` decimal(7,1) NOT NULL default '0.0',
`tendency` varchar(10) NOT NULL default '',
`forecast` varchar(7) NOT NULL default '',
UNIQUE KEY `timestamp` (`timestamp`)
) TYPE=MyISAM;
Het model van de database heb ik niet zelf bedacht. Het hoort bij open3600.
Dit is een open source pakket om waardes uit een weerstation te lezen.
Het probleem:
Als ik de waardes opvraag zonder tijd dan gaat dit goed:
mysql> SELECT rec_date, max(temp_out) FROM weatherinfo GROUP BY rec_date order by max(temp_out) DESC limit 10;
+------------+---------------+
| rec_date | max(temp_out) |
+------------+---------------+
| 2007-05-05 | 31.3 |
| 2007-05-04 | 28.4 |
| 2007-06-07 | 28.4 |
| 2007-05-03 | 26.9 |
| 2007-06-08 | 25.2 |
| 2007-05-24 | 25.1 |
| 2007-05-25 | 24.8 |
| 2007-06-09 | 24.8 |
| 2007-06-06 | 24.3 |
| 2007-06-05 | 24.0 |
+------------+---------------+
10 rows in set (0.03 sec)
Maar ik wil eigenlijk het tijdstip erbij:
mysql> SELECT rec_date, rec_time, max(temp_out) FROM weatherinfo GROUP BY rec_date order by max(temp_out) DESC limit 10;
+------------+----------+---------------+
| rec_date | rec_time | max(temp_out) |
+------------+----------+---------------+
| 2007-05-05 | 00:00:08 | 31.3 |
| 2007-05-04 | 00:00:06 | 28.4 |
| 2007-06-07 | 00:10:08 | 28.4 |
| 2007-05-03 | 00:00:07 | 26.9 |
| 2007-06-08 | 00:10:07 | 25.2 |
| 2007-05-24 | 00:10:06 | 25.1 |
| 2007-05-25 | 00:10:07 | 24.8 |
| 2007-06-09 | 00:50:07 | 24.8 |
| 2007-06-06 | 00:10:07 | 24.3 |
| 2007-06-01 | 00:10:06 | 24.0 |
+------------+----------+---------------+
10 rows in set (0.03 sec)
HIER GAAT HET FOUT.
Hij pakt dus de eerste tijdstip waarde van die dag, en niet het tijdstip waarde dat bij die meeting hoort.
Ik heb geen idee hoe ik dit op moet lossen. Ik hoop dat jullie mij kunnen helpen om de query te finetunen....
Alvast bedankt!
Ik gebruik Mysql op OpenBSD 4 op Intel
De database opbouw is als volgt:
CREATE TABLE `weatherinfo` (
`timestamp` bigint(14) NOT NULL default '0',
`rec_date` char(13) NOT NULL default '00-00-0000',
`rec_time` time NOT NULL default '00:00:00',
`temp_in` decimal(3,1) NOT NULL default '0.0',
`temp_out` decimal(3,1) NOT NULL default '0.0',
`dewpoint` decimal(3,1) NOT NULL default '0.0',
`rel_hum_in` tinyint(3) NOT NULL default '0',
`rel_hum_out` tinyint(3) NOT NULL default '0',
`windspeed` decimal(3,1) NOT NULL default '0.0',
`wind_direction` char(3) NOT NULL default '',
`wind_angle` decimal(3,1) NOT NULL default '0.0',
`wind_chill` decimal(3,1) NOT NULL default '0.0',
`rain_1h` decimal(5,1) NOT NULL default '0.0',
`rain_24h` decimal(5,1) NOT NULL default '0.0',
`rain_1w` decimal(6,1) NOT NULL default '0.0',
`rain_1m` decimal(6,1) NOT NULL default '0.0',
`rain_total` decimal(7,1) NOT NULL default '0.0',
`rel_pressure` decimal(7,1) NOT NULL default '0.0',
`abs_pressure` decimal(7,1) NOT NULL default '0.0',
`tendency` varchar(10) NOT NULL default '',
`forecast` varchar(7) NOT NULL default '',
UNIQUE KEY `timestamp` (`timestamp`)
) TYPE=MyISAM;
Het model van de database heb ik niet zelf bedacht. Het hoort bij open3600.
Dit is een open source pakket om waardes uit een weerstation te lezen.
Het probleem:
Als ik de waardes opvraag zonder tijd dan gaat dit goed:
mysql> SELECT rec_date, max(temp_out) FROM weatherinfo GROUP BY rec_date order by max(temp_out) DESC limit 10;
+------------+---------------+
| rec_date | max(temp_out) |
+------------+---------------+
| 2007-05-05 | 31.3 |
| 2007-05-04 | 28.4 |
| 2007-06-07 | 28.4 |
| 2007-05-03 | 26.9 |
| 2007-06-08 | 25.2 |
| 2007-05-24 | 25.1 |
| 2007-05-25 | 24.8 |
| 2007-06-09 | 24.8 |
| 2007-06-06 | 24.3 |
| 2007-06-05 | 24.0 |
+------------+---------------+
10 rows in set (0.03 sec)
Maar ik wil eigenlijk het tijdstip erbij:
mysql> SELECT rec_date, rec_time, max(temp_out) FROM weatherinfo GROUP BY rec_date order by max(temp_out) DESC limit 10;
+------------+----------+---------------+
| rec_date | rec_time | max(temp_out) |
+------------+----------+---------------+
| 2007-05-05 | 00:00:08 | 31.3 |
| 2007-05-04 | 00:00:06 | 28.4 |
| 2007-06-07 | 00:10:08 | 28.4 |
| 2007-05-03 | 00:00:07 | 26.9 |
| 2007-06-08 | 00:10:07 | 25.2 |
| 2007-05-24 | 00:10:06 | 25.1 |
| 2007-05-25 | 00:10:07 | 24.8 |
| 2007-06-09 | 00:50:07 | 24.8 |
| 2007-06-06 | 00:10:07 | 24.3 |
| 2007-06-01 | 00:10:06 | 24.0 |
+------------+----------+---------------+
10 rows in set (0.03 sec)
HIER GAAT HET FOUT.
Hij pakt dus de eerste tijdstip waarde van die dag, en niet het tijdstip waarde dat bij die meeting hoort.
Ik heb geen idee hoe ik dit op moet lossen. Ik hoop dat jullie mij kunnen helpen om de query te finetunen....
Alvast bedankt!