Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Gruppierte Abfrage

41 views
Skip to first unread message

Jörg Böhmichen

unread,
Jun 12, 2003, 9:43:25 AM6/12/03
to
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.

Wer kann mir sagen, wie das in der obigen Abfrage geht?

Vielen Dank für Eure Tipps!
Jörg


André Minhorst

unread,
Jun 12, 2003, 10:17:09 AM6/12/03
to
Hallo 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é

Jörg Böhmichen

unread,
Jun 12, 2003, 11:03:12 AM6/12/03
to
Hallo André,
das geht nicht, wegen ...

>-----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


André Minhorst

unread,
Jun 12, 2003, 11:33:52 AM6/12/03
to
Hallo 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é

Jörg Böhmichen

unread,
Jun 13, 2003, 2:45:38 AM6/13/03
to
Hallo 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

André Minhorst

unread,
Jun 13, 2003, 5:11:59 AM6/13/03
to
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.

Viele Gruesse
André

Jörg Böhmichen

unread,
Jun 13, 2003, 6:49:59 AM6/13/03
to
Danke André,
ich hatte vergessen, dass ich statt ODER das englische
OR nehmen muss! Jetzt geht's!

>-----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.
>

>> ...

0 new messages