MySQL - Abfrage einer Tabelle
Guten Abend zusammen,
ich stehe an einer Aufgabe und komme einfach nicht auf die Lösung. Ist vielleicht ein banales Problem! *gg*
Hier die Aufgabe. Es gibt Folgende Tabelle:
Das Ergebnis sollte so aussehen:
Also es folgendes passieren:
Di 1. Tabelle sind die Daten. Sprich es soll gezählt werden, von welchen Anfangsbuchstaben (z.B. A). Dahinter soll dann ausgegeben werden wie viel davon weiblich bzw. männlich sind (als Summe).
Ist das mit EINER mySQL-Anweisung lösbar?! Sprich es sollte so gering wie möglich gehalten werden.
Grüße
Dani
ich stehe an einer Aufgabe und komme einfach nicht auf die Lösung. Ist vielleicht ein banales Problem! *gg*
Hier die Aufgabe. Es gibt Folgende Tabelle:
Name |
Adam |
Allert |
Azuro |
Bosch |
Binder |
Boch |
Das Ergebnis sollte so aussehen:
w |
1 |
2 |
Also es folgendes passieren:
Di 1. Tabelle sind die Daten. Sprich es soll gezählt werden, von welchen Anfangsbuchstaben (z.B. A). Dahinter soll dann ausgegeben werden wie viel davon weiblich bzw. männlich sind (als Summe).
Ist das mit EINER mySQL-Anweisung lösbar?! Sprich es sollte so gering wie möglich gehalten werden.
Grüße
Dani
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 55308
Url: https://administrator.de/forum/mysql-abfrage-einer-tabelle-55308.html
Ausgedruckt am: 01.04.2025 um 22:04 Uhr
3 Kommentare
Neuester Kommentar
Moin Dani,
eine von 1000 Möglichkeiten wäre
Mimik: Ich lege in dem inneren SELECT quasi einen View auf die Tabelle "Names" (Felder: Name; Sex [m/w]) an, der den Inhalt in drei Spalten darstellt.
- Spalte 1: "abc" = Erstes Zeichen von "Name",
- Spalte 2: "femme" mit Wert 1 falls Sex='w'eiblich, 0 wenn nicht;
- Spalte 3 "malle" mit 1 falls Sex= 'm'acho, 0 wenn nicht.
Und diesem View drücke ich dann mit der "Group by"-Clause und der Sum()-Funktion ein bissi die Luft aus dem Käse.
Wenn das oben zur Leserlichkeit etwas lange Statement zu prosaisch ist, dann etwas eingedampft:
Ergibt bei mir
[Allerdings habe ich Gründen persönlicher Eitelkeit noch einen 7. Satz ("Biber", "m") hinzugefügt.]
Wenn ich noch "Mephisto", "m" und "Lolita", "w" (in dieser Reihenfolge) hinzufüge, erhalte ich
Dieses Statement würde z.B. unter M$-Access' SQL fliegen; unter mySQL und anderen Varianten musst du wahrscheinlich die exotische M$-iif()-Skalar-Funktion durch ein
"....(CASE sex WHEN "w" THEN 1 ELSE 0 END CASE) as w"
...usw. ersetzen.
HTH Biber
Und weil man/frau mich "Biber, den Geduldigen" nennt, noch einmal für den Dani ganz allein:
Bei Fragen zu SQL-Queries bitte immer das darunterliegende Datenbank-Blech ( Oracle, DB2, M$SQL, mySQL...) angeben.
[Edit]Für die, die mich jetzt für verkalkt halten: Ursprünglich war der Titel "SQL - Abfrage einer Tabelle".
@Dani Danke fürs Editieren [/Edit]
eine von 1000 Möglichkeiten wäre
select distinct(abc),count(femme) as w ,count(malle) as m from (
select abc,sum(femme) as w ,sum(malle) as m from (
SELECT left(name,1) as abc, iif(sex="w", 1,0) as femme , iif(sex="m",1,0) as malle
FROM [Names])
group by abc
order by 1 ;
Mimik: Ich lege in dem inneren SELECT quasi einen View auf die Tabelle "Names" (Felder: Name; Sex [m/w]) an, der den Inhalt in drei Spalten darstellt.
- Spalte 1: "abc" = Erstes Zeichen von "Name",
- Spalte 2: "femme" mit Wert 1 falls Sex='w'eiblich, 0 wenn nicht;
- Spalte 3 "malle" mit 1 falls Sex= 'm'acho, 0 wenn nicht.
Und diesem View drücke ich dann mit der "Group by"-Clause und der Sum()-Funktion ein bissi die Luft aus dem Käse.
Wenn das oben zur Leserlichkeit etwas lange Statement zu prosaisch ist, dann etwas eingedampft:
SELECT left(name,1) as abc,sum( iif(sex="w", 1,0)) as w ,sum( iif(sex="m",1,0)) as m
FROM Names
group by left(name,1)
order by 1;
Ergibt bei mir
abc | w | m |
A | 1 | 2 |
B | 2 | 2 |
Wenn ich noch "Mephisto", "m" und "Lolita", "w" (in dieser Reihenfolge) hinzufüge, erhalte ich
abc | w | m |
A | 1 | 2 |
B | 2 | 2 |
L | 1 | 0 |
M | 0 | 1 |
Dieses Statement würde z.B. unter M$-Access' SQL fliegen; unter mySQL und anderen Varianten musst du wahrscheinlich die exotische M$-iif()-Skalar-Funktion durch ein
"....(CASE sex WHEN "w" THEN 1 ELSE 0 END CASE) as w"
...usw. ersetzen.
HTH Biber
Und weil man/frau mich "Biber, den Geduldigen" nennt, noch einmal für den Dani ganz allein:
Bei Fragen zu SQL-Queries bitte immer das darunterliegende Datenbank-Blech ( Oracle, DB2, M$SQL, mySQL...) angeben.
[Edit]Für die, die mich jetzt für verkalkt halten: Ursprünglich war der Titel "SQL - Abfrage einer Tabelle".
@Dani Danke fürs Editieren [/Edit]