Minulla Loki-taulu, jossa on joinain päivinä paljon merkintöjä joinain ei lainkaan. Haluaisin tietää vuotuisen keskiarvon alkamisajoista niiden päivien ensimmäisistä merkinnöistä joilla merkintöjä on. Koko hommaa ei ole tarvetta tehdä yhdellä kyselyllä, mutta ainakin yhdeltä vuodelta haluaisin tuon keskiarvoajan kerrallaan, sillä php:llä keskiarvoajan laskeminen on varmaan monimutkaisempaa kuin suoraan kyselyllä...
Eli taulu on tälläinen:
Loki -- pvm (date) alkuaika (time) loppuaika (time)
Ja tulosten tulisi olla jotain tämän tyylistä:
2013 11:45 2012 13:02 2011 12:11 jne...
Esim. tämä kysely listaa päivät ja ensimmäiset ajat, mutta millä saisin noista ajoista sen keskiarvon?
SELECT pvm, min(alkuaika) FROM `Loki` WHERE pvm BETWEEN '2013-01-01' AND '2013-12-31' GROUP BY pvm pvm min( alkuaika ) 2013-03-29 13:23:00 2013-03-30 13:23:00 2013-04-01 13:53:00 2013-04-21 12:03:00 2013-04-28 14:32:00 2013-05-03 12:55:00 ...
SELECT AVG( UNIX_TIMESTAMP( `alkuaika` ) ) AS keskiarvo FROM `Loki` WHERE `pvm` BETWEEN '2013-01-01' AND '2013-12-31'
Pahoittelut ajatuskatkoksesta. Nyt tuo tulee UNIX_TIMESTAMP muodossa, jonka voit vielä muotoilla kyselyssä sopivaan formaattiin.
Eikun sähän halusit päivien ensimmäisten aikojen keskiarvon. Tuo yllä oleva laskee kaikkien aikojen keskiarvon. Kannattaa ehkä hakea ekat ajat sekunteina ja laskea php:ä keskiarvot?
#1111 - Invalid use of group function
(poistin yhden avaavan sulun)
Jotenkin tähän tyyliin...
select year(pvm) as Vuosi, avg(alkuaika) as avg_alkuaika from (SELECT pvm, min(alkuaika) as alkuaika FROM `Loki` GROUP BY pvm) as logi
Kiitti, tällä onnistui
SELECT YEAR(pvm) as Vuosi, SEC_TO_TIME(AVG(TIME_TO_SEC(alkuaika))) as avg_alkuaika FROM (SELECT pvm, min(alkuaika) as alkuaika FROM `Loki` GROUP BY pvm) as logi GROUP BY Vuosi
Aihe on jo aika vanha, joten et voi enää vastata siihen.