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: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 24-08-2009, 23:40
Danusus
 Registrierter Benutzer
Links : Onlinestatus : Danusus ist offline
Registriert seit: May 2006
Ort: GB - Newcastle
Beiträge: 24
Danusus ist zur Zeit noch ein unbeschriebenes Blatt
Standard Standardabweichung gruppiert nach Monat und Artikel

Hallo Zusammen,

Nach 2 Wochen Trial und Error hab ich viel gelernt und auch einiges hinbekommen. Jetzt happerts aber...

>>>>Möchte Folgendes als Resultat - Zieltabelle<<<<
Artikel | Standardabweichung |
A | 90
B | 100
(Hier soll die Standardabweichung stehen, diese aber von Zahlen gruppiert auf Monatsebene sein)

Zur Erklärung
>>>>1) Ursprungstabelle<<<<
Habe eine Tabelle Rechnungen:
Artikel | Stk | Datum ...
A | 300 | 10.1.2009
A | 200 | 15.1.2009
A | 150 | 02.2.2009
A | 200 | 18.2.2009
A | 200 | 10.7.2009
B | 500 | 23.3.2009
B | 400| 14.4.2009

>>>>2) Guppiert auf Monatsebene<<<<
Artikel | Stk | Datum ...
A | 500| 1 (also Januar)
A | 350| 2 (also Februar)
A | 200| 7 (also July)
B | 500 | 3 (also März)
B | 400 | 4 (also April)
(später Frage ich noch eine zusätzliche Tabelle mit Monaten von 1-12 ab, damit alle Monate pro Teil gezeigt werden. Aber jetzt erst mal nur mit einer Tabelle)

>>>>3) Standardabweichung pro Artikel<<<<
also für A: Stdev (500,350,200) B:Stdev(500,400)
und dann eben die Tabelle wie Eingangs in Zieltabelle beschrieben.
Artikel | Standardabweichung |
A | 90
B | 100
(90 und 100 nur so hingeschrieben, nicht gerechnet)
(Irgendwann mal dann Stdev(500,350,0,0,0,0,200,0,0,0,0,0), 12 Monate eben. Aber wie gesagt, jetzt erst mal mit einer Tabelle.


>>>>Zu meiner Query<<<<<
(Sorry fuer die Englischen Bezeichnungen. QTY=Stück, 10a_Invoices = Tabelle Rechnungen, Part_No_=Artikel, Invdate=Datum der Rechnung)

>>>Stdev von einem Teil<<<<
Select Stdev(F1) as F2
FROM(
select sum(QTY) as F1
FROM 10a_Invoices where Part_No_='FD430163' and year(Invdate)=2007 group by month(Invdate))
--> Das geht und gibt mir die Standardabweichung, aber eben nur für einen Artikel.

>>>>Stdev aller Teile<<<<
Jetzt möcht ich aber natürlich, dass die Standardabweichung für alle Artikel gezeigt wird:
Meine Idee war noch ein Select vorne anschliessen auf Artikel gruppiert und die Unterabfrage über den Artikel verknüpfen. Also in diese Richtung:

Select y.Part_No_, (
-----
(
Select Stdev(F1)
FROM(
select sum(QTY) as F1
FROM 10a_Invoices where Part_No_=y.Part_No_ and year(Invdate)=2007 group by month(Invdate))
) as F2
----
From 10a_Invoices y group by Part_No_

(Kann sein dass ein paar Schönheitsfehler drin sind um die gehts mir aber grad nicht)
--> War glaub ich ne schöne Idee, geht aber in leider in dem Fall nicht. Die Unterabfrage wird eben nicht für alle y.Part_No_ der Reihe nach durchlaufen sondern fragt dann beim Ausführen nach einem Wert für y.Part_No_ da dies unbekannt ist (Access).

PS, allein die StDev für ein Teil zu bekommen hat mich min. 20Std gekostet... Bin stolz drauf, aber jetzt häng ich...
Hoffentlich ist Hilfe Unterwegs...
Mit Zitat antworten
  #2 (permalink)  
Alt 25-08-2009, 00:20
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

mir fällt folgendes dazu ein (nicht getestet):

Code:
select Part_No_, stdev(F1) as F2
from(
    select Part_No_, sum(QTY) as F1
    from 10a_Invoices where year(Invdate) = 2007
    group by Part_No_, month(Invdate)
)
group by Part_No_
Erklärung: im inneren Select wird nach 2 Kriterien gruppiert, Artikelnummer und Monat. Der Rechnungsbetrag wird also für jeden Artikel und jeden Monat summiert. Das Ergebnis wird vom äußeren Select nach Artikelnummer gruppiert und daher erhält man für jede Gruppe - also jeden Artikel - die Standardabweichung der Monatssumme.

Hoffe, es klappt!

Gruß,

Anja
Mit Zitat antworten
  #3 (permalink)  
Alt 25-08-2009, 00:29
Danusus
 Registrierter Benutzer
Links : Onlinestatus : Danusus ist offline
Registriert seit: May 2006
Ort: GB - Newcastle
Beiträge: 24
Danusus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Noch jemand der nicht schlafen kann...

Witzig, gerade eben hab ich kurz an was ähnliches gedacht.
Probier ich aus.

Vielen Dank
Daniel
Mit Zitat antworten
  #4 (permalink)  
Alt 25-08-2009, 00:36
Danusus
 Registrierter Benutzer
Links : Onlinestatus : Danusus ist offline
Registriert seit: May 2006
Ort: GB - Newcastle
Beiträge: 24
Danusus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nee...
Sorry. Hat ich doch schon versucht.
Werde nach Eingabe für Part_No_ gefragt.

Das Problem ist, dass die Abfrage die Standardabeichung errechnet wobei Teile und Monate gruppiert wird. Es wird von der Unterabfrage also nur ein Wert errechnet (Die Unterabfrage ist Unabhängig von der äußeren. Und die Beiden zu verknüpfen geht daher nicht (?)). Und dieser einzige Wert der Unterabrage gilt dann als F2 für alle Artikel in der äußeren Join.

Das Erg ist also
Artikel | Stdev
A | 233
B | 233
C | 233
D | 233
(als Annahme eben daß der gewählte Artikel 233 als Stdev hat)

Geändert von Danusus (25-08-2009 um 00:41 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 25-08-2009, 00:48
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Danusus Beitrag anzeigen
Werde nach Eingabe für Part_No_ gefragt.
Von wem?

Kannst du mal bitte die Tabellenstruktur posten, z. B. "show create table ..."?
Mit Zitat antworten
  #6 (permalink)  
Alt 25-08-2009, 01:15
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Sorry, hatte nen Fehler drin, nach dem Subselect fehlte das Alias:
Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Code:
select Part_No_, stdev(F1) as F2
from(
    select Part_No_, sum(QTY) as F1
    from 10a_Invoices where year(Invdate) = 2007
    group by Part_No_, month(Invdate)
) AS temp
group by Part_No_
Ansonsten inzwischen erfolgreich getestet. Mein Setting:
Code:
CREATE TABLE IF NOT EXISTS `art` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `art` varchar(1) NOT NULL,
  `menge` int(10) unsigned NOT NULL,
  `datum` date NOT NULL,
  PRIMARY KEY (`id`)
);
Code:
insert into art (art, menge, datum) values
(char(floor(rand() * 26 + 97)), rand() * 100, date_sub(now(), interval rand() * 100 day)),
(char(floor(rand() * 26 + 97)), rand() * 100, date_sub(now(), interval rand() * 100 day)),
...
(char(floor(rand() * 26 + 97)), rand() * 100, date_sub(now(), interval rand() * 100 day));
Code:
select *, stddev(sm), group_concat(sm) from (
    select *, sum(menge) as sm, group_concat(menge) as gcm, group_concat(datum) as gcd
    from `art`
    group by art, month(datum)
) as t1
group by art
(Die ganzen group_concats sind nur zum Nachprüfen gewesen.)

Geändert von AmicaNoctis (25-08-2009 um 01:17 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 25-08-2009, 23:07
Danusus
 Registrierter Benutzer
Links : Onlinestatus : Danusus ist offline
Registriert seit: May 2006
Ort: GB - Newcastle
Beiträge: 24
Danusus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Gr8

Funktioniert.
Vielen Dank. Hat dich n bischen weniger Zeit gekostet als mich...

Ich war knapp dran, ich hätte es aber auf diese Weise gar nicht versucht.
Woher weiss die Unterabfrage denn, dass sie die Werte der Teilenummer zuordnen muss? Die Unterfrage baut doch eine 2te Tabelle auf in der Part_No_ und die QTYs stehen. Diese ist aber doch völlig unabhängig von der Darueberliegenden - oder denk ich da in die falsche Richtung?

Ich bin ständig davon ausgegangen, dass ich etwas in Richtung y.Part_No_=yy.Part_No_ einbauen muss. (mit y die Unterabfrage und yy die Uebergeordnete - Geht ja aber hier nicht weil die Tabelle nur einmal angegeben wird- Oder liegts daran?).

So... jetzt aber erst mal ne Woche SQL-Urlaub. Wenn ich zurück bin bastel ich mal weiter und bau die 2te Tabelle mit Monaten ein, damit ich die Stdev über alle 12Monate laufen lassen kann. ..... Aber bis dahin hast Du ja dann bestimmt auch schon nen Lösungsvorschlag ;-)

Vielen Dank nochmal. War wirklich ne große Hilfe.

PS
Von wem? Access... (Da hab ich verschiedene Abfrage-Tabellen wobei die dann eine nach der anderen die Abfragen aufbauen. Damit hab ich die Ergebnisse erhalten, die ich wollte. Irgendwann hab ich aber vor lauter Abfragen die Übersicht verloren... So ne kleine Query hat da dann doch was für sich.
Mit Zitat antworten
  #8 (permalink)  
Alt 25-08-2009, 23:18
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Danusus Beitrag anzeigen
Aber bis dahin hast Du ja dann bestimmt auch schon nen Lösungsvorschlag ;-)
Wofür jetzt genau?

Ach, du machst das mit Access? Ich bin von PHP und MySQL ausgegangen... Dann ist es schon erstaunlich, dass das so funktioniert.

Geändert von AmicaNoctis (25-08-2009 um 23:21 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 25-08-2009, 23:49
Danusus
 Registrierter Benutzer
Links : Onlinestatus : Danusus ist offline
Registriert seit: May 2006
Ort: GB - Newcastle
Beiträge: 24
Danusus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Tja, die unerforschten Weiten des Access...
Nehm fürs Web auch PHP&MySQL aber für Business-Sachen ist Access eben doch nicht schlecht. Das gute alte Office hat eben jeder auf seinem PC installiert...

Hab im anderen Threat nach dem kurzen Raubzug (Xampp) das lmgtfy zum ersten Mal gesehen :-). Bin da wohl der Zeit hinterher, aber bringt zum schmunzeln... solange man nicht der ist, der den Link bekommt...
Den Threat hab ich übrigens gefunden nachdem ich mich ein wenig umgeschaut habe, wer mir innerhalb ein paar Minuten eine Lösung schickt an der ich tagelang erfolgsverschont rumgewurschelt hab. Sorry aber, dass ich bei den Fragen nicht helfen kann...

Wofür denn jetzt genau?... (Ich find irgendwie den Knopf nicht für die Zitate)
Ah hier ist er ja:
Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Wofür jetzt genau?
Momentan rechnet die Stdev nur die Monate in denen es auch wirklich was gab. Also wenn es Jan, Feb und Jul 100,200,500 gab dann Stdev(100,200,500). Jetzt soll aber Stdev(100,200,0,0,0,0,500,0,0,0,...) berechnet werden (Von 12 Monaten oder eben der Zeitraum den man angibt).
Also in die Richtung
Select ....... from Invoices, Months (und nicht mehr nur von Invoices)

Ich bekomm das aber glaub ich hin. Aber wie gesagt - in der unendlichen Weite meiner Abfragensammlung find ich das schon irgenwie und ich muss das ja nun nur noch die vorhandene Abfrage erweitern.

CU
Daniel

Geändert von Danusus (25-08-2009 um 23:52 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
CSS nach Jahreszeit / Monat Damograno PHP Developer Forum 18 13-10-2006 00:07
abfrage nach bestimmten monat heinzoor SQL / Datenbanken 6 22-12-2005 10:06
Sortieren nach MONAT/JAHR JoeT PHP Developer Forum 7 12-01-2005 18:34
Tag/Monat/Jahr aus opt-Feldern nach SQL bruno123 PHP Developer Forum 11 19-09-2002 13:57
Gruppierung nach Monat Sonnenschein PHP Developer Forum 3 12-04-2002 16:48

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

Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
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
 Alle PHP Scripte anzeigen

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