php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.11.2009, 16:42  
Neuer Benutzer
 
Registriert seit: 04.11.2009
Beiträge: 5
PHP-Kenntnisse:
Anfänger
pichlerg befindet sich auf einem aufstrebenden Ast
Standard Durchschnitt von aufgesummten Beträgen

Hallo,

Ich bin noch ganz am Anfang, was das Arbeiten mit SQL angeht. Da hier anscheinend einige kompetente Leute herumlaufen und ich einfach nicht weiterkomm, hoffe ich auf eure Hilfe.

Also, folgendes Problem:

http://img5.abload.de/img/unbenanntkopienjbv.jpg
Ich würde jetzt gerne den Durchschnitt der Spalte "SUM(length)" berechnen und ausgeben, damit ich danach die eigentliche Aufgabenstellung bewältigen kann (Platten mit unterdurchschnittlicher Länge ausgeben).

Mir fällt außer AVG(SUM(length)) nichts anderes ein, damit das richtig funktioniert. Dieser Ausdruck ist aber ungültig. Wenn die Spalte von vornherein existieren würde - etwa mit dem namen record.recordLength - würde es für mich das ganze einfacher machen; tut es aber leider nicht.

Ich hoffe Ihr könnt mir helfen. Danke im Voraus.
pichlerg ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.11.2009, 16:49  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von pichlerg Beitrag anzeigen
Da hier anscheinend einige kompetente Leute herumlaufen
Was? Wo? Ehrlich? Wir werden alle sterben
Sorry, konnt ich mir nicht verkneifen

Die Gruppenfunktionen wirken auf deine Gruppe. Du kannst also bestenfalls einen Durchschnitt für alle Datensätze der ID 1 ermitteln usw. Lösungsvariante: Du machst die Berechnung des Durchschnitts im Anwendungscode (also im PHP).
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 04.11.2009, 16:55  
Neuer Benutzer
 
Registriert seit: 04.11.2009
Beiträge: 5
PHP-Kenntnisse:
Anfänger
pichlerg befindet sich auf einem aufstrebenden Ast
Standard

Leider ist das kein privates, sondern eher viel mehr ein universitäres Problem
Somit sind die Lösungswege vorgegeben und muss mittels SQL-Abfragen erfolgen.
pichlerg ist offline   Mit Zitat antworten
Alt 04.11.2009, 17:12  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Grundsätzlich alles in einem Select? Ich habs mir mal angeschaut nun. Leider ist die Aufgabenstellung etwas abgeschnitten.
Dann folgende Stichwörter für dich: HAVING und/oder Subselects.
Da das ja eine Art Heimaufgabe ist, werde ich dir nur die Stichwörter geben. Viel Spass beim Selbststudium und Ausprobieren
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 04.11.2009, 17:45  
Neuer Benutzer
 
Registriert seit: 04.11.2009
Beiträge: 5
PHP-Kenntnisse:
Anfänger
pichlerg befindet sich auf einem aufstrebenden Ast
Standard

Also, die Aufgabe ist nicht abgeschnitten. Auf dem Screenshot ist alles drauf, was gegeben ist. Sind insgesamt 5 Problemstellungen bei diesem Datenbanksystem. Da ich nun bei der obigen Abfrage (Nr. 4) schon seit 2 Tagen hänge, dachte ich halt, dass hier wer weiter weiß.

Ich will auch garnicht, dass mir wer meine Aufgabe macht (ist sowieso nicht zwingend zu machen), sondern nur, dass mir evtl wer erklären könnte, wie ich den Durchschnitt der SUM(length)-Spalte ausgeben kann. Wie gesagt, bei einer vorgegebenen Tabelle den Durchschnitt einer Spalte auszugeben schaff ich auch, nur eben nicht bei einer AVG(SUM(xx))-Konstellation.

HAVING/SUBSELECT kenn ich schon und weiß, dass sie für diese Abfrage benötigt werden, danke. Ich weiß auch, wie es danach weitergeht. Nur ohne AVG kann ich auch keine HAVING-Klausel verwenden. Es geht mir nur um die Ausgabe des Durchschnitts von SUM(length).
pichlerg ist offline   Mit Zitat antworten
Alt 04.11.2009, 17:53  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Nun. Du hast ja bereits den ersten Schritt gemacht, also die Alben samt Summe der Track-Länge gemacht. Was wäre nun, wenn du davon den Durchschnitt bilden willst? Völlig losgelöst von der Aufgabenstellung, Alben auszugeben.
Also reduziere das mal auf das einfache Ziel, den Durchschnitt zu bilden. Herauskommen wird eine Spalte mit einer Zeile.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 04.11.2009, 18:27  
Neuer Benutzer
 
Registriert seit: 04.11.2009
Beiträge: 5
PHP-Kenntnisse:
Anfänger
pichlerg befindet sich auf einem aufstrebenden Ast
Standard

Genau das ist ja mein Problem, dass ich den Durchschnitt der Spalte nicht berechnen kann. Mein einziges Ziel zur Zeit ist nur, diesen von der Spalte SUM(length) zu erhalten, aber ich weiß nicht wie.

Lassen wir mal die Spalte "recordId" weg, dann habe ich nur mehr "SUM(length)". Der Durchschnitt von diesem Attribut macht mir eben zu schaffen, weil die Spalte weder einen eindeutigen Namen hat, noch der Ausdruck "AVG(SUM(length))" gültig ist. Würde sie z.B. mit "record.albumLength" definiert sein, ginge es mittels:

SELECT AVG(albumLength)
FROM record
pichlerg ist offline   Mit Zitat antworten
Alt 04.11.2009, 18:32  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Wie wäre es damit?
Code:
SELECT AVG(spalte) FROM (SubSelect)
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 04.11.2009, 18:48  
Neuer Benutzer
 
Registriert seit: 04.11.2009
Beiträge: 5
PHP-Kenntnisse:
Anfänger
pichlerg befindet sich auf einem aufstrebenden Ast
Standard

Ehm, ja hat geklappt. Danke!

Falls es wen interessiert, hier der Query:

Code:
SELECT record.recordId, record.artistName, record.title
FROM record, track
WHERE record.recordId=track.recordId AND
          record.type='Album'
HAVING SUM(length) <
          (SELECT AVG(recordLength) FROM (SELECT record.recordId, SUM(length) AS recordLength
          FROM record, track
          WHERE record.type='Album' AND
                    track.recordId=record.recordId
          GROUP BY record.recordId))
GROUP BY record.recordId, record.artistName, record.title

Geändert von pichlerg (05.11.2009 um 00:23 Uhr).
pichlerg ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL durchschnitt berechnen socke PHP Tipps 2005-2 9 15.09.2005 17:41
Durchschnitt socke Datenbanken 3 19.08.2005 13:36
My SQL Durchschnitt Datenbanken 5 27.02.2005 13:45
Eigentlich banal - Durchschnitt ausrechnen - aber wie? PHP Tipps 2004-2 4 06.12.2004 19:20
Durchschnitt von Spalten einer Zeile Datenbanken 1 20.08.2004 12:30

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
durchschnitt ausrechnen, sql durschnitt ausgeben, sql durchschnitt, sql durchschnitt berechnen, sql durchschnittswert, msql durchschnitt, durchschnitt php, durchschnittswert bei datenbank sql, sql avg spalten berechnen, durchschnitt ausgeben php sql, ein php code zur ermittlung eines mittelwertes, sql durchschnitt ausgeben, php zeit durchschnitt, durchschnitt ein spalte sql, sql durschnitt berechnen sum, durschnitt berechnen php, gruppenfunktionen durchschnitt, php durchschnitt, durchschnitt mit beträgen, php durchschnitt avg -mysql

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum