Gehalt um 1000 erhöhen

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,

ich möchte in einer Tabelle

VORNAME NACHNAME GEHALT

das Einkommen der 3, die am wenigsten verdienen, um 1000 erhöhen,


das folgende SQL-Statement liefert die 3 Mitarbeiter mit dem wenigsten Gehalt aber ich weiß nicht, wie ich das so um/einbauen kann, dass sich das Gehalt dieser 3 erhöht
Code:
SELECT vorname, nachname, gehalt
FROM (
  SELECT vorname, nachname, gehalt
  FROM mitarbeiter
  WHERE gehalt IS NOT NULL
  ORDER BY gehalt asc)
WHERE ROWNUM <= 3

Wäre Euch dankbar wenn Ihr mir helfen könntet, DB ist Oracle
Vielen Dank,
 
G

Guest

Gast
:wink:
Code:
SELECT vorname, nachname, 1000 + gehalt
 
G

Gast

Gast
Moin,

ich meinte schon, dass sich das Gehalt in der Tabelle um 1000 erhöht, also werde ich da ein UPDATE brauchen aber ich weiß nicht wie ich diese UPDATE einbauen kann und wäre daher dankbar für hilfe in diese Richtung,

Vielen Dank,
 
G

Guest

Gast
Mit dem SQL- Statement unten bekomme ich den Fehler, das die Unterabfrage zu viele Ergebnisse liefert,
was kann ich da machen?
Vielen Dank,


Code:
update employees set salary = (SELECT salary
    FROM (SELECT salary + 1000
              FROM employees
              WHERE salary IS NOT NULL
              ORDER BY salary asc)
              WHERE ROWNUM <= 3);
 
S

SlaterB

Gast
na die Anfrage ist ja auch schlecht

Code:
update employees set salary = salary + 1000 WHERE id IN (SELECT id der drei Niedrigverdiener);

was ist eigentlich, wenn 4 das gleiche verdienen, Zufallsentscheidung?
 

FenchelT

Bekanntes Mitglied
Ich habe damit mal ein wenig rumgespielt, allerdings unter MSSQL 2005

Gegeben die folgende Tabelle mit den Feldern id, name, gehalt:
1 Donald 4000
2 Daisy 4000
3 Tick 4000
4 Trick 4000
5 Track 5000
6 Daniel 4000
7 Dagobert 20000
8 Mickey 6000
9 Goofy 4500
10 Mini 2500

Code:
select top 1 id
from daten 
where gehalt = (SELECT min(gehalt) from daten)
UNION
select id from daten
where gehalt =(
				select  min(gehalt)
				from daten 
				where gehalt > ALL (Select min(gehalt) from daten)
			   )

order by id asc


Als Ergebnis werden nun die IDs mit den beiden niedrigsten Werten zurueckgegeben. Zum "drittniedrigsten Wert" bin ich aber noch nicht gekommen:

Ergebnis IDs:
1
2
3
4
6
10
 
V

VoiDee

Gast
Anonymous hat gesagt.:
Mit dem SQL- Statement unten bekomme ich den Fehler, das die Unterabfrage zu viele Ergebnisse liefert,
was kann ich da machen?
Vielen Dank,


Code:
update employees set salary = (SELECT salary
    FROM (SELECT salary + 1000
              FROM employees
              WHERE salary IS NOT NULL
              ORDER BY salary asc)
              WHERE ROWNUM <= 3);

Dieses Update Statement beinhaltet ein potenzielles Problem: wenn es mehrere User gibt, die auf dem dritten Platz liegen (also das dritt-niedrigste Gehalt haben), dann bekommt nur einer davon die 1000 mehr. Welcher das ist, entscheided die Oracle-DB relativ willkürlich.

Uch würde daher mit einem Ranking arbeiten.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben