Wie erstelle ich so eine Abfrage

Guchelkaben

Benutzer
Beiträge
7
Moin Freunde,

ich frage mich grade wie ich so eine Abfrage mit SQL "programmieren" kann.

Wie viele Projekte wurden im Jahr 2016 abgeschlossen?

und

Welche Abteilung hat im Durchschnitt die jüngsten Mitarbeiter? Geben Sie den Namen der Abteilung und das durchschnittliche Geburtsjahr aus.

Wie kann ich das realisieren ? Ich kann ja nicht den aktuellsten wert in eine Variable speichern.

26074110fz.jpg
 
Werbung:
Wie sind denn Deine Ansätze dazu? Das erste ist ganz trivial, für das zweite brauchst Du einen Join. All das sind ganz einfachste Abfragen, denkst Du wirklich, es wäre eine Hilfe für Dich, wenn wir Dir hier die fertige Lösung zeigen?
 
Es gibt ja keine While schleife, wo ich jedes Projekt durchgehen kann, dort den Wert berechne und miteinander vergleiche :D das ist das Problem
 
Erste Abfrage habe ich so gemacht :

SELECT COUNT(id) FROM tbl_abgeschlossen
WHERE abgeschlossen = 'true' AND Beginn > 2016-1-1 AND Ende < 2016-12-31;

Bei der Zweiten
Muss ich wohl mit AVG(), ROUND() und Now() Arbeiten.

Muss ja herausfinden von heute - das Geburtsdatum = Alter
Das Alter muss ich denn von jeder Abteilung herausfinden und dann zurückgeben.

Aber wie gebe ich zwei Sachen zurück ?

SELECT Abteilung.name FROM Abteilung
JOIN Mitarbeiter ON Mitarbeiter.Abteilung = Abteilung.Id

Weiter weiß ich nicht. Wie bekomme ich den den Durschnittswert heraus?

AVG((NOW()-Mitarbeiter.DateOfBirth)/365) dann habe ich die Jahre

und wie vergleiche ich jeden einzelne Abteilung miteinander ?
 
Werbung:
Code:
test=# create table abteilung(id int primary key, name text);
CREATE TABLE
test=*# create table mitarbeiter(id int primary key, name text, abteilung int references abteilung, geb_datum date);
CREATE TABLE
test=*# select a.name, avg(age(m.geb_datum)) from abteilung a left join mitarbeiter m on a.id=m.abteilung group by a.name;
 name | avg
------+-----
(0 Zeilen)

test=*#
 
Zurück
Oben