4.4.3 Functies Flashcards

1
Q

Maak een lijst met achter elke medewerker het precieze uurloon,
het uurloon dat op twee decimalen is afgerond,
en het uurloon dat op twee decimalen is afgekapt.
Het uurloon wordt
berekend op basis van een kwartaal:
(maandsalaris * 3) / (38 * 13)

A

select (maandsal * 3) / (38 * 13) as “precieze uurloon”,
round((maandsal * 3) / (38 * 13), 2) as “uurloon afgerond”,
trunc((maandsal * 3) / (38 * 13), 2) as “uurloon afgekapt”
from medewerkers;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Maak een lijst waarin de verschillende waarden
van FUNCTIE elk op drie manieren wordt
weergegeven:
met alleen aan het begin een hoofdletter, –> initcap(tekst)
volledig in hoofdletters –> upper(tekst)
en volledig in kleine letters. –> lower(tekst)

A

col “Beginletter” format a25;
col “Hoofdletters” format a25;
col “Kleine letters” format a25;

select distinct initcap(functie) as “Beginletter”,
upper(functie) “Hoofdletters”,
lower(functie) “Kleine letters”
from medewerkers;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Geef van elke cursus de naam en de lengte
van de naam.

A

select length(omschrijving) as Lengte
from cursussen;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Doorzoek de namen van de medewerkers op de letter ‘e’
Wordt de letter ‘e’ gevonden dan drukt
men in het resultaat het positienummer.
Laat op drie manieren zoeken:
- zoek vanaf de eerste positie naar
de eerste letter ‘e’
– zoek vanaf de vierde positie naar
de eerste letter ‘e’
– zoek vanaf de eerste positie naar
de tweede letter ‘e

A

select naam, instr(naam, ‘E’),
instr(naam, ‘E’, 4),
instr(naam, ‘E’, 1, 2)
from medewerkers;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Maak een histogram met als maatstaf
de lengte van de namen van de medewerkers.
Zorg dat de kolom histogram 25 karakters breed is.
NAAM LENGTE HISTOGRAM
BRIERS 6 **
DE KONING 9 **
***

A

col histogram format a25;

select naam, length(naam) as lengte,
rpad(‘+’, length(naam), ‘+’) as histogram
from medewerkers;

select naam, length(naam) as lengte,
lpad(‘+’, length(naam), ‘+’) as histogram
from medewerkers;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Maak een lijst met de namen van de medewerkers,
met hun namen zonder vooraan de letters
‘de’
en met hun namen zonder achteraan de letters ‘sen’
indien ze voorkomen.

ltrim(tekst, letters die je wil wegknippen)
rtrim(tekst, letters die je wil wegknippen)

A

select ltrim(naam, ‘DE’),
rtrim(naam, ‘SEN’)
from medewerkers;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Geef een lijst met de namen van de afdelingen,
de nummers en de nummers voorafgegaan
door de letters ‘AF’.

A

select naam,
anr,
concat(‘AF’, anr)
from afdelingen;

select naam,
anr,
‘AF’ || anr || ‘bla’ || ‘haha’ || locatie
from afdelingen;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Geef een lijst met de namen van alle cursussen
waarbij de letters ‘WC#’ vervangen worden
door ‘ZK-‘.
Zowel de hoofdletters als de kleine letters vervangen.

A

select translate(omschrijving, ‘WCwc#’, ‘ZKzk-‘)
as “Gekke naam”
from cursussen;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Sorteer de namen van de medewerkers
zonder rekening te houden met eventuele blanco’s.

A

select naam
from medewerkers
order by replace(naam, ‘ ‘ , ‘’);

select naam
from medewerkers
order by replace(naam, ‘ ‘);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Druk enkel de medewerkers af waarvan
de naam uit 2 delen bestaat.

Het eerste gedeelte wordt in kleine letters
en tussen haakjes na het tweede gedeelte
(in hoofdletters) van de naam afgedrukt.
Vb. KONING (de)

A

SELECT
substr(naam, instr(naam, ‘ ‘)) ||
‘ (‘ ||
lower(substr(naam, 1, instr(naam, ‘ ‘) - 1)) ||
‘)’ “Naam”
from medewerkers
where naam like ‘% %’;

SELECT
(UPPER(SUBSTR(naam, INSTR(naam, ‘ ‘))) || ‘ (‘ ||
LOWER(RTRIM(SUBSTR(naam, 1, INSTR(naam, ‘ ‘)), ‘ ‘)) || ‘)’) “Naam”
FROM medewerkers
WHERE (LENGTH(naam) - LENGTH(REPLACE(naam, ‘ ‘, ‘’))) = 1;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Bepaal voor elke medewerker wiens naam een ‘e’ bevat wat groter is:
zijn salaris*2, zijn MNR of het MNR van zijn chef?
Naast de naam en het grootste element wordt aangegeven welk element de grootste waarde heeft (chef, salaris of mnr). Gebruik hiervoor de DECODE()

A

select naam, greatest(maandsal2, mnr, nvl(chef, mnr)) “Grootste waarde”,
decode(greatest(maandsal
2, mnr, nvl(chef, mnr)),
maandsal*2, ‘Salaris’,
mnr, ‘MNR’,
‘Chef’) “Type”
from medewerkers
where upper(naam) like ‘%E%’;

DECODE(input,
a, x,
b, y,
c, z,
w)

CASE input
WHEN a THEN x
WHEN b THEN y
WHEN c THEN z
ELSE w
END

CASE
WHEN input = a THEN x
WHEN input = b THEN y
WHEN input = c THEN z
ELSE w
END

select
naam “Naam”,
greatest(maandsal * 2, mnr, nvl(chef, mnr)) “Grootste waarde”,
decode(greatest(maandsal * 2, mnr, nvl(chef, 0)),
maandsal * 2, ‘Salaris’,
mnr, ‘MNR’,
‘Chef’) “Type”
from medewerkers
where lower(naam) like ‘%e%’;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Bepaal voor elke medewerker wiens naam een ‘e’ bevat wat kleiner is: zijn salaris*2, zijn MNR of het MNR van zijn chef? Naast de naam en het kleinste element wordt aangegeven welk element de kleinste waarde heeft (chef, salaris of mnr). Gebruik hiervoor de case.

A

select naam “Naam”,
least(maandsal * 2, mnr, nvl(chef, mnr)) “Kleinste waarde”,
case least(maandsal * 2, mnr, nvl(chef, mnr))
when maandsal * 2 then ‘Salaris’
when mnr then ‘MNR’
else ‘Chef’
end “Type”
from medewerkers
where lower(naam) like ‘%e%’;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Geef een lijst van de medewerkers waarbij de functie ‘TRAINER’ voorgesteld wordt als ‘LERAAR’ en ‘DIRECTEUR’ als ‘HOOFD’. Alle overige functies worden als ‘MEDEWERKER’ voorgesteld. Los op met decode() en de case.

A

select naam,
case functie
when ‘TRAINER’ then ‘LERAAR’
when ‘DIRECTEUR’ then ‘HOOFD’
else ‘MEDEWERKER’
end as functie
from medewerkers;

select naam,
decode(functie,
‘TRAINER’, ‘LERAAR’,
‘DIRECTEUR’, ‘HOOFD’,
‘MEDEWERKER’) as functie
from medewerkers;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Welke waarde is het grootst: het MNR-2000 of de 2de macht van de eerste letterwaarde van de medewerkernaam? Geef aan welke waarde het grootste is.

A

col “Grootste waarde” format a30;

select
naam “Naam”,
case greatest(mnr - 2000, power(ascii(naam), 2))
when (mnr - 2000) then ‘mnr - 2000’
else ‘letterwaarde’
end “Grootste waarde”
from medewerkers;

select
naam “Naam”,
decode(greatest(mnr - 2000, power(ascii(naam), 2)),
mnr - 2000, ‘mnr - 2000’,
‘letterwaarde’) “Grootste waarde”
from medewerkers;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Geef een lijst van de medewerkers waarbij de kolommen NAAM, FUNCTIE en OVERZICHT worden afgedrukt. In de kolom OVERZICHT wordt voor een trainer zijn/haar salaris afgedrukt, voor een verkoper wordt zijn/haar commissie afgedrukt en in alle andere gevallen drukt men ‘onbelangrijk’ af.

A

select naam, functie,
case functie
when ‘TRAINER’ then to_char(maandsal)
when ‘VERKOPER’ then to_char(comm)
else ‘onbelangrijk’
end as overzicht
from medewerkers;

select naam, functie,
decode(functie,
‘TRAINER’, to_char(maandsal),
‘VERKOPER’, to_char(comm),
‘onbelangrijk’) as overzicht
from medewerkers;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Geef voor alle managers de dag van de week, de dag, de maand en het jaar in vier cijfers waarop ze geboren zijn.
Vb. JACOBS donderdag 02 april 1987

A

select
naam “Naam”,
to_char(gbdatum, ‘day’) “Weekdag”,
to_char(extract(day from gbdatum), ‘09’) “Dag”,
to_char(gbdatum, ‘month’) “Maand”,
extract(year from gbdatum) “Jaar”
from medewerkers
where functie = ‘MANAGER’;

17
Q

Hoeveel dagen oud ben je?

A

select trunc(sysdate - DATE ‘1992-01-12’) from dual;
select trunc(sysdate - to_date(‘12-01-1992’)) from dual;

18
Q

Geef voor alle trainers de geboortedatum voluit geschreven.
NAAM GEBOORTEDATUM VISSER The Twenty-fifth of December One Thousand Nine Hunderd Sixty-five

A

alter session set nls_language=English;

SELECT naam, TO_CHAR(gbdatum, ‘“The” Ddsp “of” fmMonth Yyyysp’) “GEBOORTEDATUM”
FROM medewerkers
WHERE functie = ‘TRAINER’;

alter session set nls_language=Dutch;

19
Q

Geef het weeknummer, het kwartaal en het Juliaans dagnummer van de geboortedata van Wouters en Swinnen?

A

SELECT
naam “Naam”,
TO_CHAR(gbdatum, ‘W’) “Weeknummer”,
TO_CHAR(gbdatum, ‘Q’) “Kwartaal”,
TO_CHAR(gbdatum, ‘J’) “Juliaans dagnummer”
FROM medewerkers
WHERE naam IN (‘WOUTERS’, ‘SWINNEN’);

20
Q

Maak een lijst waarin voor elke medewerker aangegeven staat op welk uur van de dag hij/zij geboren is. De tijd die in het voorbeeld wordt afgedrukt is de tijd die in het attribuut GBDATUM werd pgeslagen. Standaard is deze tijd 12:00 AM omdat het niet meegedeeld is aan de databank.

A

SELECT voorn AS “Voornaam”, naam AS “Naam”, EXTRACT(hour FROM CAST(gbdatum AS TIMESTAMP)) AS “Uur geboorte”
FROM medewerkers;

21
Q

Geef voor alle medewerkers de geboortedatum en de datum 6 maanden later.

A

SELECT
voorn “Voornaam”,
naam “Naam”,
gbdatum “Geboortedatum”,
ADD_MONTHS(gbdatum, 6) “6 maanden later”
FROM medewerkers;

22
Q

Geef naam, de vierkantswortel van het salaris en het aantal jaren (afgerond op 2 cijfers na de komma) dat de medewerker oud is.

A

select
naam “Naam”,
sqrt(maandsal) “Vierkantswortel”,
round(months_between(sysdate, gbdatum) / 12, 2) “Jaren”
from medewerkers;

23
Q

Druk de leeftijd af in maanden, dagen en jaren (zonder cijfers na de komma) voor elke medewerker ouder dan 35 jaar.

A

select
voorn “Voornaam”,
naam “Naam”,
trunc(months_between(sysdate, gbdatum)) “Maanden”,
trunc(sysdate - gbdatum) “Dagen”,
trunc(months_between(sysdate, gbdatum) / 12) “Jaren”
from medewerkers
where trunc(months_between(sysdate, gbdatum) / 12) > 35;

of gebruik floor() in plaats van trunc()

24
Q

Druk voor alle medewerkers de laatste dag van de maand af waarop zij geboren zijn.

A

select voorn “Voornaam”, naam “Naam”, last_day(gbdatum) “Laatste dag”
from medewerkers

25
Q

Druk van elke medewerker de datum af van de eerste vrijdag volgend op de 3000 dagen na de geboortedatum.

A

select voorn “Voornaam”, naam “Naam”, next_day((gbdatum + 3000), ‘vri’) “Datum”
from medewerkers;

26
Q

Geef de functie en naam van alle medewerkers die voor 1984 geboren zijn. Vermeld per medewerker de inkomensklasse. Wanneer het maandelijks salaris kleiner is dan 2500 wordt “goedkoop” vermeld anders is het “duur”. Sorteer de resultaattabel op basis van de functie. Eerst de directeur, dan de managers, vervolgens de verkopers en tenslotte de trainer en boekhouder.

A

select functie, naam,
case
when maandsal < 2500 then ‘goedkoop’
else ‘duur’
end as klasse
from medewerkers
where extract(year from gbdatum) < 1984
order by
case functie
when ‘DIRECTEUR’ then 1
when ‘MANAGER’ then 2
when ‘VERKOPER’ then 3
when ‘TRAINER’ then 4
else 5
end asc;

select functie, naam,
case
when maandsal < 2500 then ‘goedkoop’
else ‘duur’
end as klasse
from medewerkers
where extract(year from gbdatum) < 1984
order by
case
when functie = ‘DIRECTEUR’ then 1
when functie = ‘MANAGER’ then 2
when functie = ‘VERKOPER’ then 3
when functie = ‘TRAINER’ then 4
else 5
end asc;

select functie, naam,
case
when maandsal < 2500 then ‘goedkoop’
else ‘duur’
end as klasse
from medewerkers
where extract(year from gbdatum) < 1984
order by
decode(functie,
‘DIRECTEUR’, 1,
‘MANAGER’, 2,
‘VERKOPER’, 3,
‘TRAINER’, 4,
5) asc;

27
Q

maak de colom groter

A

col grootste format a20;