php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 3 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 27-06-2007, 18:33
Rumpelst1lzchen
 Newbie
Links : Onlinestatus : Rumpelst1lzchen ist offline
Registriert seit: Aug 2006
Beiträge: 13
Rumpelst1lzchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard MYSQL Datenbank durchschnittliche Zeit

Moin,

ich habe eine Datenbank mit vielen Einträgen und jeder Eintrag hat ein Datum/Zeit, wann er zuletzt aktualisiert wurde.
Von all diesen Einträgen möchte ich nun ein durchschnittliches Datum/Zeit. Das Format wie es in der DB steht ist zb.

2007-06-26 19:02:15

und daraus sollte halt im gleichen Format ein durchschnittswert gemacht werden. Habs mit avg probiert, aber das gibt nur durcheinander
Bin nicht gerade ein SQL Profi, daher hoffe ich, das mir hier jemand weiter helfen kann.
mfg
Rumpel
Mit Zitat antworten
  #2 (permalink)  
Alt 27-06-2007, 18:53
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: MYSQL Datenbank durchschnittliche Zeit

Wie soll denn bitte ein "Durchschnitt" von Datumswerten aussehen ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 27-06-2007, 19:17
Rumpelst1lzchen
 Newbie
Links : Onlinestatus : Rumpelst1lzchen ist offline
Registriert seit: Aug 2006
Beiträge: 13
Rumpelst1lzchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zb.

1 Wert : 1 Januar 2007
2 Wert : 3 Januar 2007

Der Mittelwert wäre also 2 Januar 2007
Das ganze ist eine Ogame Datenbank (falls Dir dieses Spiel ein Begriff ist) und es geht darum um eine durchschnittliche Aktualität zu bestimmen. Bei 4491 Einträgen wäre es sonst sehr ungenau wenn man immer das aktuellsten Datum nehmen würde. Daher suche ich die Möglichkeit aus allen Datums/Zeit einen Mittelwert zu errechnen um den User eine durchschnittliche Aktualität auszugeben.
mfg
Rumpel
Mit Zitat antworten
  #4 (permalink)  
Alt 27-06-2007, 19:24
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

welch seltsames verlangen...

vielleicht auf den unix timestamp ausweichen (natürlich nur zur berechnung).
Mit Zitat antworten
  #5 (permalink)  
Alt 27-06-2007, 19:47
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

ehm, DATEDIFF() ?

Verfahren:

Code:
Unterschied =  DATEDIFF(Datum1, Datum2);
Durchschnitt = Datum1 + Unterschied;
Wenn Datum1 kleiner, sonst entsprechend abgeändert.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #6 (permalink)  
Alt 27-06-2007, 19:52
Rumpelst1lzchen
 Newbie
Links : Onlinestatus : Rumpelst1lzchen ist offline
Registriert seit: Aug 2006
Beiträge: 13
Rumpelst1lzchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wie würde das dann ungefähr aussehen ?

also ich code nicht die Ogamedatenbank direkt sondern einen IRC Bot in TCL, um Daten aus der DB direkt ins IRC abzufragen. Der Coder der Ogamedatenbank hat eine neue Version raus gebracht und dort zahlreiche Sachen in der Datenbank geändert. Unter anderem auch halt die Einträge der Datumsangaben, wann zu letzt der Eintrag aktuallisiert wurde. Früher konnte ich mit

SELECT FROM_UNIXTIME(avg(zeit+3600), '%d/%m/%Y %H:%i:%s') FROM $galatable" -flatlist

den durchschnitt errechnen, aber mit dem neuen Format funktioniert das heute nicht mehr

mfg
Rumpel
Mit Zitat antworten
  #7 (permalink)  
Alt 27-06-2007, 19:55
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

jetzt muss die spalte "zeit" in der query nach unix timestamp konvertiert werden.

Geändert von penizillin (27-06-2007 um 19:57 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 27-06-2007, 21:31
Rumpelst1lzchen
 Newbie
Links : Onlinestatus : Rumpelst1lzchen ist offline
Registriert seit: Aug 2006
Beiträge: 13
Rumpelst1lzchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hmmm
ich habs nun so versucht

SELECT FROM_UNIXTIME(avg '%Y-%m-%d %H:%i:%s', (zeit+3600))

aber der Syntax scheint falsch zu sein ...
hab schon rumprobiert aber geht nicht
Mit Zitat antworten
  #9 (permalink)  
Alt 27-06-2007, 21:54
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

http://dev.mysql.com/doc/refman/5.0/...unix-timestamp
Mit Zitat antworten
  #10 (permalink)  
Alt 27-06-2007, 23:28
Rumpelst1lzchen
 Newbie
Links : Onlinestatus : Rumpelst1lzchen ist offline
Registriert seit: Aug 2006
Beiträge: 13
Rumpelst1lzchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das klappt auch nicht ...
ich habs jetzt ganz simpel

SELECT avg(zeit)

das Datum kommt damit hin. Allerdings gibt er dann den unix timestap ins irc . Ich habs dann versucht mit DATE_FORMAT(zeit, '%d.%m.%Y')
um zu wandeln. Nur dann meckert er rum, er möchte doch gerne ein GROUP BY. Lasse ich aber Gruppieren wird das ergebniss wieder verfälscht. Ergebniss wäre dann das letzte bekannte Datum von allem.
Sitze da jetzt seit 20:00 Uhr dran und langsam würde ich gerne ins Keyboard beissen =)
mfg
Rumpel
Mit Zitat antworten
  #11 (permalink)  
Alt 28-06-2007, 11:18
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Alternativvorschlag:

Du ermittelst erst wieviele Einträge du hast - den Wert den du dabei erhältst teilst du einfach durch zwei.

Mit diesem Wert setzt du eine Query mit LIMIT ab, die nach deiner Datumsspalte sortiert ist.

Das nennt man dann zwar nicht Durchschnitt, sondern Median - der Vorteil vom Median ist, dass er resistenter gegen Ausreisser ist - Beispiel:

Du hast eine einfache Liste von Werten:

1
1200
1250
1260
1270

Der Durchschnitt wäre 996,2 - weil die eins den Durschnitt ziemlich drückt.

Beim Median pickt man sich quasi in der sortierten Liste den Wert raus, der in der Mitte der sortierten Liste liegt -> 1250
Mit Zitat antworten
  #12 (permalink)  
Alt 28-06-2007, 11:39
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Zu deinem ursprünglichen Anliegen - obwohl hier eigentlich kein fertiger Code gepostet wird:

PHP-Code:
SELECT FROM_UNIXTIMEAVGUNIX_TIMESTAMPZeit ) + 3600 ) , '%d.%m.%Y %H:%i:%S' ) as myAVG FROM bla 
... bevor du dich an deiner Tastatur vergreifst.
Mit Zitat antworten
  #13 (permalink)  
Alt 28-06-2007, 17:11
Rumpelst1lzchen
 Newbie
Links : Onlinestatus : Rumpelst1lzchen ist offline
Registriert seit: Aug 2006
Beiträge: 13
Rumpelst1lzchen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Quetschi
Zu deinem ursprünglichen Anliegen - obwohl hier eigentlich kein fertiger Code gepostet wird:

PHP-Code:
SELECT FROM_UNIXTIMEAVGUNIX_TIMESTAMPZeit ) + 3600 ) , '%d.%m.%Y %H:%i:%S' ) as myAVG FROM bla 
... bevor du dich an deiner Tastatur vergreifst.
Quetschi mein Held
Es funktioniert, es ist ein Wunder
und ich glaubte echt schon, ich hätte jede möglichkeit durch
vielen vielen Dank.

Das mit Median werde ich mir aufjedenfall auch noch mal ansehen, aber im moment geht es erstmal darum einen funktionsfähigen Code auf die Beine zu stellen. Danach kommt nach und nach die Deluxe Version des Bots

mfg
Rumpel
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:43 Uhr.