SELECT Mitarbeiter.Geschlecht, Count(Mitarbeiter.
Geschlecht) AS [Anzahl von Geschlecht]
FROM Mitarbeiter
GROUP BY Mitarbeiter.Geschlecht;
Anzeige:
Geschlecht | Anzahl von Geschlecht
------------+----------------------
w | 190
m | 226
Nun will ich als dritte Spalte noch den Prozentsatz
w/(w+m) und m/(w+m) ausgeben.
Wer kann mir sagen, wie das in der obigen Abfrage geht?
Vielen Dank für Eure Tipps!
Jörg
Jörg Böhmichen <boehm...@ipfdd.de> schrieb am Thu, 12 Jun 2003 06:43:25 -0700
> Hallo NG,
> in meiner Mitarbeiter-Tabelle habe ich für jeden MA das
> Geschlecht hinterlegt: 1=w(eiblich), 2= m(ännlich).
> Über eine gruppierte Abfrage kriege ich die Anzahl
> männlicher und weiblicher Mitarbeiter heraus.
>
> SELECT Mitarbeiter.Geschlecht, Count(Mitarbeiter.
> Geschlecht) AS [Anzahl von Geschlecht]
> FROM Mitarbeiter
> GROUP BY Mitarbeiter.Geschlecht;
>
> Anzeige:
> Geschlecht | Anzahl von Geschlecht
> ------------+----------------------
> w | 190
> m | 226
>
> Nun will ich als dritte Spalte noch den Prozentsatz
> w/(w+m) und m/(w+m) ausgeben.
>
Füge Deiner Abfrage noch zwei Felder hinzu: eines, dass über DCount die
Gesamtzahl der Mitarbeiter ermittelt und eines, dass dein Feld [Anzahl
von Geschlecht] durch die ermittelte Gesamtzahl teilt.
Könnte etwa so aussehen:
SELECT Mitarbeiter.Geschlecht, Count(Mitarbeiter.Geschlecht) AS [Anzahl
von Geschlecht], DCOUNT("ID", "Mitarbeiter") AS Gesamtzahl, [Anzahl von
Geschlecht]/[Gesamtzahl] AS Prozentsatz FROM Mitarbeiter GROUP BY
Mitarbeiter.Geschlecht;
Viel Erfolg
André
>-----Originalnachricht-----
>von Geschlecht], DCOUNT("ID", "Mitarbeiter") AS
Gesamtzahl, [Anzahl von
>Geschlecht]/[Gesamtzahl] AS Prozentsatz FROM Mitarbeiter
GROUP BY
>Mitarbeiter.Geschlecht;
>
[Anzahl von Geschlecht] hab' ich aus der SQL-Ansicht der
Abfrage genommen; wenn ich das jetzt als Feld einsetze
und damit den prozentualen Anteil ausrechnen will, fragt
Access nach diesem vermeintlichen Parameter.
Und wenn ich [Anzahl von Geschlecht] als neue Spalten-
eschriftung angebe, meint Access, "das DB-Modul kann
[Anzahl von Geschlecht] nicht finden. Stellen Sie sicher,
dass es sich um einen gültigen Alias oder Parameter
handelt ..."
Noch Tipps???
Danke!
Jörg
Jörg Böhmichen <boehm...@ipfdd.de> schrieb am Thu, 12 Jun 2003 08:03:12 -0700
> Hallo André,
> das geht nicht, wegen ...
>
> [Anzahl von Geschlecht] hab' ich aus der SQL-Ansicht der
> Abfrage genommen; wenn ich das jetzt als Feld einsetze
> und damit den prozentualen Anteil ausrechnen will, fragt
> Access nach diesem vermeintlichen Parameter.
> Und wenn ich [Anzahl von Geschlecht] als neue Spalten-
> eschriftung angebe, meint Access, "das DB-Modul kann
> [Anzahl von Geschlecht] nicht finden. Stellen Sie sicher,
> dass es sich um einen gültigen Alias oder Parameter
> handelt ..."
>
> Noch Tipps???
> Danke!
> Jörg
>
Ich verstehe nicht, warum Du nicht einfach die Abfrage wie vorgeschlagen
verwenden kannst.
Bei mir funktioniert es so einwandfrei.
Viele Grüße
André
>-----Originalnachricht-----
>...
>Ich verstehe nicht, warum Du nicht einfach die Abfrage
>wie vorgeschlagen verwenden kannst.
>Bei mir funktioniert es so einwandfrei.
>
Du hast recht: bei direkter Übernahme des SQL-Codes
geht es einwandfrei. Vielen Dank!
Aber eigentlich geht es doch nicht einwandfrei. Das liegt
am Design meiner Tabelle Mitarbeiter -- dort sind nämlich
auch alle Mitarbeiter drin, die jemals am Institut ar-
beiteten. Alle aktuellen Mitarbeiter erfüllen die Beding.
"[Abgangsdatum] Ist Null ODER >= Datum()".
Das einfache Hinzufügen dieser Bedingung in die gruppierte
Abfrage brachte folgende Ausgabe:
Geschlecht|Anzahl von Geschlecht|Gesamtzahl|Prozentsatz
----------+---------------------+----------+------------
| 0| 426| 0
w | 163| 426| 0,382629108
m | 184| 426|0,4319248826
Und das kann ja nicht stimmen, die Prozentangaben müssen
zusammen 100 ergeben! Deshalb habe ich den Code mit einem
Kriterium in der DCount-Funktion erweitert:
SELECT Mitarbeiter.Geschlecht, Count
(Mitarbeiter.Geschlecht) AS [Anzahl von Geschlecht],
DCount("MitarbeiterID","Mitarbeiter", "[Abgangsdatum] ist
null Oder Abgangsdatum >= Datum()") AS Gesamtzahl,
[Anzahl von Geschlecht]/[Gesamtzahl] AS Prozentsatz
FROM Mitarbeiter
WHERE (((Mitarbeiter.Abgangsdatum) Is Null Or
(Mitarbeiter.Abgangsdatum)>=Date()))
GROUP BY Mitarbeiter.Geschlecht;
Access meldet "Syntaxfehler (fehlender Operator) in Ab-
frageausdruck '[Abgangsdatum] ... Date'".
Verschiedene Syntax-Änderungen, u.a. "is null" und "Date"
brachten keine Lösung.
Kannst Du nochmal helfen?
Vielen Dank!
Jörg
wenn Du Domaenenfunktionen in SQL verwendest, musst Du die englischen
Schluesselwoerter benutzen, z.B. 'is' statt 'ist' oder 'or' statt 'oder' -
Du weisst schon, was ich meine.
Viele Gruesse
André
>-----Originalnachricht-----
>Hallo Jörg,
>
>wenn Du Domaenenfunktionen in SQL verwendest, musst Du
die englischen
>Schluesselwoerter benutzen, z.B. 'is' statt 'ist'
oder 'or' statt 'oder' -
>Du weisst schon, was ich meine.
>
>> ...