Portál AbcLinuxu, 21. července 2025 22:16
SELECT id, DATE(datum) as `mydate`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`b`.`datum`) ,' 00:%') ORDER BY `stupnu` LIMIT 1) as `h0`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 02:%') ORDER BY `stupnu` LIMIT 1) as `h1`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 04:%') ORDER BY `stupnu` LIMIT 1) as `h2`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 06:%') ORDER BY `stupnu` LIMIT 1) as `h3`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 08:%') ORDER BY `stupnu` LIMIT 1) as `h4`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 10:%') ORDER BY `stupnu` LIMIT 1) as `h5`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 12:%') ORDER BY `stupnu` LIMIT 1) as `h6`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 14:%') ORDER BY `stupnu` LIMIT 1) as `h7`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 16:%') ORDER BY `stupnu` LIMIT 1) as `h6`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 18:%') ORDER BY `stupnu` LIMIT 1) as `h7`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 20:%') ORDER BY `stupnu` LIMIT 1) as `h8`, (SELECT `stupnu` FROM `_teplota` b WHERE `b`.`datum` LIKE CONCAT('%', DATE(`a`.`datum`) ,' 22:%') ORDER BY `stupnu` LIMIT 1) as `h9` FROM `_teplota` a GROUP BY `mydate` DESC LIMIT 10Dekuji.
SELECT id, DATE(datum) AS mydate, MIN(IF(HOUR(datum) DIV 2 = 0, stupnu, NULL)) AS h0, MIN(IF(HOUR(datum) DIV 2 = 1, stupnu, NULL)) AS h1, MIN(IF(HOUR(datum) DIV 2 = 2, stupnu, NULL)) AS h2 FROM _teplota GROUP BY mydate
| 1 | 2014-03-28 11:00:00 | 0.00 | | 2 | 2014-03-28 12:00:00 | -0.50 | | 3 | 2014-03-28 13:00:00 | -0.40 | | 4 | 2014-03-28 14:00:00 | -0.40 | | 5 | 2014-03-28 16:00:00 | -0.40 |Muj dotaz sice funguje, ale je silene pomaly. Pravdepodobne za to muze propojeni tech dvou dotazu.
SELECT
max(stupnu),
DATE(datum),
HOUR(datum),
FROM
(SELECT
stupnu,
DATE(datum) + interval mod(hour(datum,2)) zaokrouhli_datum
FROM) data
GROUP BY datum
ORDER BY datum
"Pivot tables" (kontigngenční tabulky) pro datábázi moc práce nejsou.
Pokud bys to chtěl udělat fakt v databázi, tak asi takhle:
SELECT
max(if(hodina = 0, stupnu, NULL) as h0,
max(if(hodina = 2, stupnu, NULL) as h2,
...
max(if(hodina = 22, stupnu, NULL) as h22,
DATE(datum),
HOUR(datum),
FROM
(SELECT
DATE(datum) as datum,
HOUR(datum) as hodina,
stupnu
FROM tabulka) data
GROUP BY datum
ORDER BY datum
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.