Statistik auswerten


isaack

Mitglied
Hallo,
ich habe in einer datenbank folgendes gespeichert:

|59|Auto-Surf|1578178800|1578182399|196
|60|Paidmail|1578178800|1578182399|314
|61|Forcedbanner|1578178800|1578182399|171
|62|Textlink|1578178800|1578182399|57
|63|Auto-Surf|1578182400|1578185999|131
|64|Paidmail|1578182400|1578185999|68
|65|Klick4Win|1578182400|1578185999|10
|66|Forcedbanner|1578182400|1578185999|89
|67|Klick4Win|1578186000|1578189599|5
|68|Auto-Surf|1578186000|1578189599|94
|69|Forcedbanner|1578186000|1578189599|165
|70|Textlink|1578186000|1578189599|42
|71|Auto-Surf|1578189600|1578193199|202
|72|Paidmail|1578189600|1578193199|15
|73|Auto-Surf|1578193200|1578196799|200
|74|Paidmail|1578193200|1578196799|60
|75|Forcedbanner|1578193200|1578196799|30
|76|Textlink|1578193200|1578196799|32
|77|Auto-Surf|1578196800|1578200399|112
|78|Paidmail|1578196800|1578200399|240
|79|Forcedbanner|1578196800|1578200399|416
|80|Textlink|1578196800|1578200399|194
|81|Auto-Surf|1578200400|1578203999|83
|82|Forcedbanner|1578200400|1578203999|283
|83|Paidmail|1578200400|1578203999|38

die werte 3 und 4 sind unix timestamps die immer 3600 sekunden unterscheiden. sprich es wird erfasst, was in welcher stunde geklickt wird.

jetzt möchte ich aus diesen werten, auch raus bekommen zwischen welchen zeitfenstern und an welchem tag die meisten klicks gemacht werden.

wie kann ich das am besten anstellen?
brauche nur ein paar denkanstöße :)
danke schonmal im vorraus.
 

Sprint

Erfahrenes Mitglied
Deine Beschreibung ist leider etwas dünn und ich verstehe auch nicht so ganz, was du wirklich willst. Darum rate ich jetzt einfach mal.

Wenn jede der aufgeführten Zeilen nur ein Feld ist, trenne es mit explode() auf. Die Timestamps kannst du mit date() in ein lesbares Format umwandeln.Wenn der letzte Wert jeweils die Anzahl ist, brauchst du das ganze nur noch in einer Schleife ausgeben.

Ansonsten beschreibe bitte genauer, was du machen willst und wo wir anschubsen sollen.
 

Sempervivum

Erfahrenes Mitglied
Ich verstehe das so, dass der TO die Werte in der Datenbank gespeichert hat. In dem Fall würde ich die Tabelle mit absteigender Sortierung nach Anzahl der Klicks (5. Spalte) auslesen und nur den ersten Eintrag ausgeben.
 

isaack

Mitglied
Deine Beschreibung ist leider etwas dünn und ich verstehe auch nicht so ganz, was du wirklich willst. Darum rate ich jetzt einfach mal.

Wenn jede der aufgeführten Zeilen nur ein Feld ist, trenne es mit explode() auf. Die Timestamps kannst du mit date() in ein lesbares Format umwandeln.Wenn der letzte Wert jeweils die Anzahl ist, brauchst du das ganze nur noch in einer Schleife ausgeben.

Ansonsten beschreibe bitte genauer, was du machen willst und wo wir anschubsen sollen.
also das ist ein auszug meiner datenbank. das ist keine textdatei :) oder ähnliches
genau so steht es drin, nur halt wie man es sieht im mysql admin :) habe bloß auf text exportiert.

Ich verstehe das so, dass der TO die Werte in der Datenbank gespeichert hat. In dem Fall würde ich die Tabelle mit absteigender Sortierung nach Anzahl der Klicks (5. Spalte) auslesen und nur den ersten Eintrag ausgeben.
so habe ich jetzt allerdings nur das problem, das es mir immer nur einen bereich berücksichtigt. die spalte 3 ist ja immer4 mal vorhanden, da ja die klicks aus 4 bereichen gezählt werdne.
 

Sprint

Erfahrenes Mitglied
Gib uns doch mal ein Beispiel, wie es am Ende aussehen soll. Ansonsten ist das eine einzige Raterei.
 

Yaslaw

n/a
Moderator
Annahmen
- DB ist MySQL oder MariaDB
- Die Tabelle heisst MY_TABLE
- Die Felder in der DB heissen: ID | TXT | FROM_DT | TO_DT | CLICK_CNT

Dann gehen wir mal nach dem Klassiker vor: [SQL] Aktuelle Einträge pro Gruppe auslesen


Zuerst mal eine Abfrage, der die Werte brauchbar macht und auf den Tag hochrechnen
SQL:
create or replace view VW_WORK_DATA_PER_DAY as 
select 
	sum(CLICK_CNT) as CNT, 
	date(from_unixtime(TO_DT)) as T_DT
from MY_TABLE
group by ID, date(from_unixtime(TO_DT))
SQL:
select
	vw.*
from
	VW_WORK_DATA_PER_DAY vw
where
	vw.CNT in (select max(CNT) from VW_WORK_DATA_PER_DAY )
 

isaack

Mitglied
Annahmen
- DB ist MySQL oder MariaDB
- Die Tabelle heisst MY_TABLE
- Die Felder in der DB heissen: ID | TXT | FROM_DT | TO_DT | CLICK_CNT

Dann gehen wir mal nach dem Klassiker vor: [SQL] Aktuelle Einträge pro Gruppe auslesen

Zuerst mal eine Abfrage, der die Werte brauchbar macht und auf den Tag hochrechnen
SQL:
create or replace view VW_WORK_DATA_PER_DAY as
select
    sum(CLICK_CNT) as CNT,
    date(from_unixtime(TO_DT)) as T_DT
from MY_TABLE
group by ID, date(from_unixtime(TO_DT))
SQL:
select
    vw.*
from
    VW_WORK_DATA_PER_DAY vw
where
    vw.CNT in (select max(CNT) from VW_WORK_DATA_PER_DAY )
hammer geil :)
aber wie bekommt man das jetzt hin, das es anstatt das datum, die uhrzeit anzeigt?
es wird ja momentan der tag angezeigt, was ja auch gebraucht wird allerdings fehlt mir halt die zeitspannt.
FROM_DT ist bei mir von
und TO_DT ist bei mir bis und das ist immer eine stunde.
 

zerix

Hausmeister
Moderator
hammer geil :)
aber wie bekommt man das jetzt hin, das es anstatt das datum, die uhrzeit anzeigt?
es wird ja momentan der tag angezeigt, was ja auch gebraucht wird allerdings fehlt mir halt die zeitspannt.
FROM_DT ist bei mir von
und TO_DT ist bei mir bis und das ist immer eine stunde.
Shift-Taste schon wieder kaputt?
 

Neue Beiträge