Hej, Habr!
I over 3 år har jeg undervist i SQL på forskellige træningscentre, og en af mine observationer er, at studerende tilegner sig og forstår SQL bedre, når de får stillet opgaver, i stedet for blot at høre om mulighederne og de teoretiske grundlag.
I denne artikel vil jeg dele min liste over opgaver, som jeg giver til studerende som hjemmearbejde, og som vi laver forskellige former for brainstorming ud fra, hvilket fører til en dyb og klar forståelse af SQL.

SQL (ˈɛsˈkjuˈɛl; eng. structured query language – 'strukturert forespørgselssprog') – er et deklarativt programmeringssprog, der anvendes til at oprette, ændre og administrere data i en relationsdatabase, der styres af et passende databasehåndteringssystem.
Du kan finde information om SQL fra forskellige .
Denne artikel har ikke til hensigt at lære dig SQL fra bunden.
Så lad os komme i gang.
Vi vil benytte den velkendte i Oracle med dens tabeller ():

Jeg vil bemærke, at vi kun vil se på opgaver om SELECT. Her er der ikke opgaver om DML og DDL.
Opgaver
Begrænsning og sortering af data
Tabel Employees. Få en liste med information om alle ansatte
Løsning
SELECT * FROM employees
Tabel Employees. Få en liste over alle ansatte med navnet 'David'
Løsning
SELECT *
FROM employees
WHERE first_name = 'David';
Tabel Employees. Få en liste over alle ansatte med job_id lig med 'IT_PROG'
Løsning
SELECT *
FROM employees
WHERE job_id = 'IT_PROG'
Tabel Employees. Få en liste over alle ansatte fra afdeling 50 (department_id) med løn (salary) over 4000
Løsning
SELECT *
FROM employees
WHERE department_id = 50 AND salary > 4000;
Tabel Employees. Få en liste over alle ansatte fra 20. og 30. afdeling (department_id)
Løsning
SELECT *
FROM employees
WHERE department_id = 20 OR department_id = 30;
Tabel Employees. Få en liste over alle ansatte, hvis sidste bogstav i navnet er 'a'
Løsning
SELECT *
FROM employees
WHERE first_name LIKE '%a';
Tabel Employees. Få en liste over alle ansatte fra afdeling 50 og afdeling 80 (department_id), som har en bonus (værdien i kolonnen commission_pct er ikke tom)
Løsning
SELECT *
FROM employees
WHERE (department_id = 50 OR department_id = 80)
AND commission_pct IS NOT NULL;
Tabel Employees. Få en liste over alle ansatte, hvis navn indeholder mindst 2 bogstaver 'n'
Løsning
SELECT *
FROM employees
WHERE first_name LIKE '%n%n%';
Tabel Employees. Få en liste over alle ansatte, hvis navn er længere end 4 bogstaver
Løsning
SELECT *
FROM employees
WHERE first_name LIKE '%_____%';
Tabel over ansatte. Hent en liste over alle ansatte, hvis løn ligger mellem 8000 og 9000 (inklusive)
Løsning
SELECT *
FROM employees
WHERE salary BETWEEN 8000 AND 9000;
Tabel over ansatte. Hent en liste over alle ansatte, hvis navn indeholder tegnet ‘%’
Løsning
SELECT *
FROM employees
WHERE first_name LIKE '%%%' ESCAPE '';
Tabel over ansatte. Hent en liste over alle ID'er for ledere
Løsning
SELECT DISTINCT manager_id
FROM employees
WHERE manager_id IS NOT NULL;
Tabel over ansatte. Hent en liste over medarbejdere med deres stillinger i formatet: Donald(sh_clerk)
Løsning
SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;
Brug af enkelt-række funktioner til at tilpasse output
Tabel over ansatte. Hent en liste over alle ansatte, hvis navn er længere end 10 bogstaver
Løsning
SELECT *
FROM employees
WHERE LENGTH (first_name) > 10;
Tabel over ansatte. Hent en liste over alle ansatte, hvis navn indeholder bogstavet ‘b’ (uanset store eller små bogstaver)
Løsning
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name), 'b') > 0;
Tabel over ansatte. Hent en liste over alle ansatte, hvis navn indeholder mindst 2 bogstaver ‘a’
Løsning
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name), 'a', 1, 2) > 0;
Tabel over ansatte. Hent en liste over alle ansatte, hvis løn er delelig med 1000
Løsning
SELECT *
FROM employees
WHERE MOD (salary, 1000) = 0;
Tabel over ansatte. Hent det første 3-cifrede nummer fra medarbejderens telefonnummer, hvis nummeret er i formatet XXX.XXX.XXXX
Løsning
SELECT phone_number, SUBSTR (phone_number, 1, 3) new_phone_number
FROM employees
WHERE phone_number LIKE '___.___.____';
Tabel over afdelinger. Hent det første ord fra afdelingens navn for dem, der har mere end ét ord i navnet
Løsning
SELECT department_name,
SUBSTR (department_name, 1, INSTR (department_name, ' ')-1)
first_word
FROM departments
WHERE INSTR (department_name, ' ') > 0;
Tabel over ansatte. Hent medarbejdernes navne uden den første og sidste bogstav i navnet
Løsning
SELECT first_name, SUBSTR (first_name, 2, LENGTH (first_name) - 2) new_name
FROM employees;
Tabel over ansatte. Hent en liste over alle ansatte, hvis sidste bogstav i navnet er ‘m’ og navnet er længere end 5
Løsning
SELECT *
FROM employees
WHERE SUBSTR (first_name, -1) = 'm' AND LENGTH(first_name) > 5;
Tabel over Dual. Hent datoen for næste fredag
Løsning
SELECT NEXT_DAY (SYSDATE, 'FRIDAY') next_friday FROM DUAL;
Tabel over ansatte. Hent en liste over alle ansatte, der har arbejdet i virksomheden i mere end 17 år
Løsning
SELECT *
FROM employees
WHERE MONTHS_BETWEEN (SYSDATE, hire_date) / 12 > 17;
Tabel over ansatte. Hent en liste over alle ansatte, hvis sidste cifre i telefonnummeret er ulige og består af 3 cifre adskilt af prikker
Løsning
SELECT *
FROM employees
WHERE MOD (SUBSTR (phone_number, -1), 2) != 0
AND INSTR (phone_number, '.', 1, 3) = 0;
Tabel Employees. Hent listen over alle medarbejdere, hvor værdien af job_id efter tegnet '_' har mindst 3 tegn, men dette værdien efter '_' ikke er lig med 'CLERK'
Løsning
SELECT *
FROM employees
WHERE LENGTH (SUBSTR (job_id, INSTR (job_id, '_') + 1)) > 3
AND SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';
Tabel Employees. Hent listen over alle medarbejdere ved at erstatte alle '.' i PHONE_NUMBER med '-'
Løsning
SELECT phone_number, REPLACE (phone_number, '.', '-') new_phone_number
FROM employees;
Brug af konverteringsfunktioner og betingede udtryk
Tabel Employees. Hent listen over alle medarbejdere, der startede den første dag i en måned (enhver måned)
Løsning
SELECT *
FROM employees
WHERE TO_CHAR (hire_date, 'DD') = '01';
Tabel Employees. Hent listen over alle medarbejdere, der startede i 2008
Løsning
SELECT *
FROM employees
WHERE TO_CHAR (hire_date, 'YYYY') = '2008';
Tabel DUAL. Vis i morgen dato i format: Tomorrow is Second day of January
Løsning
SELECT TO_CHAR (SYSDATE, 'fm""Tomorrow is ""Ddspth ""day of"" Month') info
FROM DUAL;
Tabel Employees. Hent listen over alle medarbejdere og datoen for hver ansættelse i formatet: 21st of June, 2007
Løsning
SELECT first_name, TO_CHAR (hire_date, 'fmddth ""of"" Month, YYYY') hire_date
FROM employees;
Tabel Employees. Hent listen over medarbejdere med lønstigninger på 20%. Vis lønnen med dollar tegn
Løsning
SELECT first_name, TO_CHAR (salary + salary * 0.20, 'fm$999,999.00') new_salary
FROM employees;
Tabel Employees. Hent listen over alle medarbejdere, der startede i februar 2007.
Løsning
SELECT *
FROM employees
WHERE hire_date BETWEEN TO_DATE ('01.02.2007', 'DD.MM.YYYY')
AND LAST_DAY (TO_DATE ('01.02.2007', 'DD.MM.YYYY'));
SELECT *
FROM employees
WHERE to_char(hire_date,'MM.YYYY') = '02.2007';
Tabel DUAL. Vis den aktuelle dato, + sekund, + minut, + time, + dag, + måned, + år
Løsning
SELECT SYSDATE now,
SYSDATE + 1 / (24 * 60 * 60) plus_second,
SYSDATE + 1 / (24 * 60) plus_minute,
SYSDATE + 1 / 24 plus_hour,
SYSDATE + 1 plus_day,
ADD_MONTHS (SYSDATE, 1) plus_month,
ADD_MONTHS (SYSDATE, 12) plus_year
FROM DUAL;
Tabel Employees. Hent listen over alle medarbejdere med totale lønninger (salary + commission_pct(%)) i formatet: $24,000.00
Løsning
SELECT first_name, salary, TO_CHAR (salary + salary * NVL (commission_pct, 0), 'fm$99,999.00') full_salary
FROM employees;
Tabel Employees. Hent listen over alle medarbejdere og information om tilstedeværelsen af lønbonusser (Ja/Nej)
Løsning
SELECT first_name, commission_pct, NVL2 (commission_pct, 'Yes', 'No') has_bonus
FROM employees;
Tabel Employees. Hent niveauet for hver medarbejders løn: Under 5000 betragtes som lavt niveau, Lige med eller over 5000 og under 10000 betragtes som normalt niveau, Lige med eller over 10000 betragtes som højt niveau
Løsning
SELECT first_name,
salary,
CASE
WHEN salary = 5000 AND salary < 10000 THEN 'Normal'
ELSE 'Høj'
END salary_level
FROM employees;
Tabel Countries. Vis regionen for hvert land: 1-Europe, 2-America, 3-Asia, 4-Africa (uden Join)
Løsning
SELECT country_name country,
DECODE (region_id,
1, 'Europa',
2, 'Amerika',
3, 'Asien',
4, 'Afrika',
'Ukendt')
region
FROM countries;
SELECT country_name
country,
CASE region_id
WHEN 1 THEN 'Europa'
WHEN 2 THEN 'Amerika'
WHEN 3 THEN 'Asien'
WHEN 4 THEN 'Afrika'
ELSE 'Ukendt'
END
region
FROM countries;
Rapportering af aggregerede data ved brug af gruppefunktioner
Tabel Employees. Få en rapport over department_id med minimum og maksimum løn, tidlig og sen ansættelsesdato samt antallet af medarbejdere. Sorter efter antallet af medarbejdere (i faldende rækkefølge)
Løsning
SELECT department_id,
MIN (salary) min_salary,
MAX (salary) max_salary,
MIN (hire_date) min_hire_date,
MAX (hire_date) max_hire_Date,
COUNT (*) count
FROM employees
GROUP BY department_id
ORDER BY count(*) DESC;
Tabel Employees. Hvor mange medarbejdere har navne der starter med samme bogstav? Sorter efter antal. Vis kun dem hvor antallet er større end 1
Løsning
SELECT SUBSTR (first_name, 1, 1) first_char, COUNT (*)
FROM employees
GROUP BY SUBSTR (first_name, 1, 1)
HAVING COUNT (*) > 1
ORDER BY 2 DESC;
Tabel Employees. Hvor mange medarbejdere arbejder i samme afdeling og får samme løn?
Løsning
SELECT department_id, salary, COUNT (*)
FROM employees
GROUP BY department_id, salary
HAVING COUNT (*) > 1;
Tabel Employees. Få en rapport om hvor mange medarbejdere der blev ansat på hver ugedag. Sorter efter antal
Løsning
SELECT TO_CHAR (hire_Date, 'Day') day, COUNT (*)
FROM employees
GROUP BY TO_CHAR (hire_Date, 'Day')
ORDER BY 2 DESC;
Tabel Employees. Få en rapport om hvor mange medarbejdere der blev ansat hvert år. Sorter efter antal
Løsning
SELECT TO_CHAR (hire_date, 'YYYY') year, COUNT (*)
FROM employees
GROUP BY TO_CHAR (hire_date, 'YYYY');
Tabel Employees. Få antallet af afdelinger med medarbejdere
Løsning
SELECT COUNT (COUNT (*)) department_count
FROM employees
WHERE department_id IS NOT NULL
GROUP BY department_id;
Tabel Employees. Få en liste over department_id med mere end 30 medarbejdere
Løsning
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (*) > 30;
Tabel Employees. Få en liste over department_id og den afrundede gennemsnitlige løn for medarbejdere i hver afdeling.
Løsning
SELECT department_id, ROUND (AVG (salary)) avg_salary
FROM employees
GROUP BY department_id;
Tabel Countries. Få en liste over region_id med summen af alle tegn i country_name hvor der er mere end 60
Løsning
SELECT region_id
FROM countries
GROUP BY region_id
HAVING SUM (LENGTH (country_name)) > 60;
Tabel Employees. Hent listen over department_id, hvor medarbejdere arbejder med flere (>1) job_id
Løsning
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (DISTINCT job_id) > 1;
Tabel Employees. Hent listen over manager_id, der har flere end 5 underordnede, og summen af alle lønninger for hans underordnede er over 50000
Løsning
SELECT manager_id
FROM employees
GROUP BY manager_id
HAVING COUNT (*) > 5 AND SUM (salary) > 50000;
Tabel Employees. Hent listen over manager_id, hvor den gennemsnitlige løn for alle hans underordnede ligger mellem 6000 og 9000, og som ikke modtager bonusser (commission_pct er tom)
Løsning
SELECT manager_id, AVG (salary) avg_salary
FROM employees
WHERE commission_pct IS NULL
GROUP BY manager_id
HAVING AVG (salary) BETWEEN 6000 AND 9000;
Tabel Employees. Hent den højeste løn blandt alle medarbejdere, hvor job_id slutter med ordet ‘CLERK’
Løsning
SELECT MAX (salary) max_salary
FROM employees
WHERE job_id LIKE '%CLERK';
SELECT MAX (salary) max_salary
FROM employees
WHERE SUBSTR (job_id, -5) = 'CLERK';
Tabel Employees. Hent den højeste løn blandt alle gennemsnitlige lønninger pr. afdeling
Løsning
SELECT MAX (AVG (salary))
FROM employees
GROUP BY department_id;
Tabel Employees. Hent antallet af medarbejdere med samme antal bogstaver i navnet. Vis kun dem, hvis længde af navnet er over 5 og antallet af medarbejdere med dette navn er over 20. Sorter efter længden af navnet
Løsning
SELECT LENGTH (first_name), COUNT (*)
FROM employees
GROUP BY LENGTH (first_name)
HAVING LENGTH (first_name) > 5 AND COUNT (*) > 20
ORDER BY LENGTH (first_name);
SELECT LENGTH (first_name), COUNT (*)
FROM employees
WHERE LENGTH (first_name) > 5
GROUP BY LENGTH (first_name)
HAVING COUNT (*) > 20
ORDER BY LENGTH (first_name);
Visning af data fra flere tabeller ved hjælp af joins
Tabel Employees, Departaments, Locations, Countries, Regions. Hent listen over regioner og antallet af medarbejdere i hver region
Løsning
SELECT region_name, COUNT (*)
FROM employees e
JOIN departments d ON (e.department_id = d.department_id)
JOIN locations l ON (d.location_id = l.location_id)
JOIN countries c ON (l.country_id = c.country_id)
JOIN regions r ON (c.region_id = r.region_id)
GROUP BY region_name;
Tabel Employees, Departaments, Locations, Countries, Regions. Hent detaljerede oplysninger om hver medarbejder:
First_name, Last_name, Departament, Job, Street, Country, Region
Løsning
SELECT First_name,
Last_name,
Department_name,
Job_id,
street_address,
Country_name,
Region_name
FROM employees e
JOIN departments d ON (e.department_id = d.department_id)
JOIN locations l ON (d.location_id = l.location_id)
JOIN countries c ON (l.country_id = c.country_id)
JOIN regions r ON (c.region_id = r.region_id);
Tabel Employees. Vis alle ledere, der har flere end 6 medarbejdere under dem
Løsning
VÆLG man.first_name, COUNT (*)
FRA ansatte emp JOIN ansatte man ON (emp.manager_id = man.employee_id)
GRUPPER EFTER man.first_name
HAVING COUNT (*) > 6;
Tabel Ansatte. Vis alle medarbejdere, der ikke rapporterer til nogen.
Løsning
VÆLG emp.first_name
FRA ansatte emp
VENSTRE JOIN ansatte man ON (emp.manager_id = man.employee_id)
HVOR man.FIRST_NAME ER NULL;
VÆLG first_name
FRA ansatte
HVOR manager_id ER NULL;
Tabel Ansatte, Jobhistorik. I tabellen Ansatte gemmes alle medarbejdere. I tabellen Jobhistorik opbevares medarbejdere, der har forladt virksomheden. Få en rapport om alle medarbejdere og deres status i virksomheden (Ansat eller forladt med fratrædelsesdato).
Eksempel:
first_name | status
Jennifer | Forlod virksomheden den 31. december 2006
Clara | Arbejder for tiden
Løsning
VÆLG first_name,
NVL2 (
end_date,
TO_CHAR (end_date, 'fm""Forlod virksomheden den"" DD ""i"" Måned, YYYY'),
'Arbejde i øjeblikket')
status
FRA ansatte e VENSTRE JOIN job_history j ON (e.employee_id = j.employee_id);
Tabel Ansatte, Afdelinger, Lokationer, Lande, Regioner. Få en liste over medarbejdere, der bor i Europa (region_name).
Løsning
VÆLG first_name
FRA ansatte
JOIN afdelinger USING (department_id)
JOIN lokationer USING (location_id)
JOIN lande USING (country_id)
JOIN regioner USING (region_id)
HVOR region_name = 'Europa';
VÆLG first_name
FRA ansatte e
JOIN afdelinger d ON (e.department_id = d.department_id)
JOIN lokationer l ON (d.location_id = l.location_id)
JOIN lande c ON (l.country_id = c.country_id)
JOIN regioner r ON (c.region_id = r.region_id)
HVOR region_name = 'Europa';
Tabel Ansatte, Afdelinger. Vis alle afdelinger, hvor der arbejder mere end 30 medarbejdere.
Løsning
VÆLG department_name, COUNT (*)
FRA ansatte e JOIN afdelinger d ON (e.department_id = d.department_id)
GRUPPER EFTER department_name
HAVING COUNT (*) > 30;
Tabel Ansatte, Afdelinger. Vis alle medarbejdere, der ikke er tilknyttet nogen afdeling.
Løsning
VÆLG first_name
FRA ansatte e
VENSTRE JOIN afdelinger d ON (e.department_id = d.department_id)
HVOR d.department_name ER NULL;
VÆLG first_name
FRA ansatte
HVOR department_id ER NULL;
Tabel Ansatte, Afdelinger. Vis alle afdelinger, hvor der ikke er nogen medarbejdere.
Løsning
VÆLG department_name
FRA ansatte e
HØJRE JOIN afdelinger d ON (e.department_id = d.department_id)
HVOR first_name ER NULL;
Tabel Ansatte. Vis alle medarbejdere, der ikke har nogen underordnede.
Løsning
VÆLG man.first_name
FRA ansatte emp
HØJRE JOIN ansatte man ON (emp.manager_id = man.employee_id)
HVOR emp.FIRST_NAME ER NULL;
Tabel Ansatte, Jobs, Afdelinger. Vis medarbejdere i formatet: First_name, Job_title, Department_name.
Eksempel:
First_name | Job_title | Department_name
Donald | Shipping | Clerk Shipping
Løsning
VÆLG first_name, job_title, department_name
FRA ansatte e
JOIN jobs j ON (e.job_id = j.job_id)
JOIN afdelinger d ON (d.department_id = e.department_id);
Tabel Ansatte. Få en liste over medarbejdere, hvis ledere blev ansat i 2005, men som selv blev ansat før 2005.
Løsning
VÆLG emp.*
FRA ansatte emp JOIN ansatte man ON (emp.manager_id = man.employee_id)
HVOR TO_CHAR (man.hire_date, 'YYYY') = '2005'
OG emp.hire_date < TO_DATE ('01012005', 'DDMMYYYY');
Tabel for Ansatte. Få en liste over ansatte, hvis ledere blev ansat i januar måned i et hvilket som helst år, og længden af jobtitlen for disse ansatte er over 15 tegn.
Løsning
VÆLG emp.*
FRA ansatte emp
JOIN ansatte man ON (emp.manager_id = man.employee_id)
JOIN jobs j ON (emp.job_id = j.job_id)
HVOR TO_CHAR (man.hire_date, 'MM') = '01' OG LENGTH (j.job_title) > 15;
Brug af underforespørgsler til at løse forespørgsler
Tabel for Ansatte. Få en liste over ansatte med det længste navn.
Løsning
VÆLG *
FRA ansatte
HVOR LENGTH (first_name) =
(VÆLG MAX (LENGTH (first_name)) FRA ansatte);
Tabel for Ansatte. Få en liste over ansatte med en løn højere end den gennemsnitlige løn for alle ansatte.
Løsning
VÆLG *
FRA ansatte
HVOR salary > (VÆLG AVG (salary) FRA ansatte);
Tabel for Ansatte, Afdelinger, Lokationer. Få byen, hvor de ansatte samlet set tjener mindst.
Løsning
VÆLG city
FRA ansatte e
JOIN afdelinger d ON (e.department_id = d.department_id)
JOIN lokationer l ON (d.location_id = l.location_id)
GRUPPER EFTER city
HAVING SUM (salary) =
( VÆLG MIN (SUM (salary))
FRA ansatte e
JOIN afdelinger d ON (e.department_id = d.department_id)
JOIN lokationer l ON (d.location_id = l.location_id)
GRUPPER EFTER city);
Tabel for Ansatte. Få en liste over ansatte, hvis leder tjener mere end 15000.
Løsning
VÆLG *
FRA ansatte
HVOR manager_id IN (VÆLG employee_id
FRA ansatte
HVOR salary > 15000)
Tabel Ansatte, Afdelinger. Vis alle afdelinger, hvor der ikke er nogen medarbejdere.
Løsning
VÆLG *
FRA afdelinger
HVOR department_id NOT IN (VÆLG department_id
FRA ansatte
HVOR department_id IS NOT NULL);
Tabel for Ansatte. Vis alle ansatte, som ikke er ledere.
Løsning
VÆLG *
FRA ansatte
HVOR employee_id NOT IN (VÆLG manager_id
FRA ansatte
HVOR manager_id IS NOT NULL)
Tabel Employees. Vis alle ledere, der har flere end 6 medarbejdere under dem
Løsning
VÆLG *
FRA ansatte e
HVOR (VÆLG COUNT (*)
FRA ansatte
HVOR manager_id = e.employee_id) > 6;
Tabel for Ansatte, Afdelinger. Vis ansatte, der arbejder i IT-afdelingen.
Løsning
VÆLG *
FRA ansatte
HVOR department_id = (VÆLG department_id
FRA afdelinger
HVOR department_name = 'IT');
Tabel Ansatte, Jobs, Afdelinger. Vis medarbejdere i formatet: First_name, Job_title, Department_name.
Eksempel:
First_name | Job_title | Department_name
Donald | Shipping | Clerk Shipping
Løsning
VÆLG first_name,
(VÆLG job_title
FRA jobs
HVOR job_id = e.job_id)
job_title,
(VÆLG department_name
FRA afdelinger
HVOR department_id = e.department_id)
department_name
FRA ansatte e;
Tabel Ansatte. Få en liste over medarbejdere, hvis ledere blev ansat i 2005, men som selv blev ansat før 2005.
Løsning
VÆLG *
FRA ansatte
HVOR manager_id IN (VÆLG employee_id
FRA ansatte
HVOR TO_CHAR (hire_date, 'YYYY') = '2005')
OG hire_date < TO_DATE ('01012005', 'DDMMYYYY');
Tabel for Ansatte. Få en liste over ansatte, hvis ledere blev ansat i januar måned i et hvilket som helst år, og længden af jobtitlen for disse ansatte er over 15 tegn.
Løsning
VÆLG *
FRA ansatte e
HVOR manager_id IN (VÆLG employee_id
FRA ansatte
HVOR TO_CHAR (hire_date, 'MM') = '01')
OG (VÆLG LENGTH (job_title)
FRA jobs
HVOR job_id = e.job_id) > 15;
Det er alt for nu.
Jeg håber, opgaverne var interessante og underholdende.
Jeg vil så vidt muligt opdatere denne liste med opgaver.
Jeg er også åben for eventuelle kommentarer og forslag.
P.S.: Hvis nogen får en interessant opgave til SELECT, så skriv i kommentarer, så tilføjer jeg den til listen.
Tak.
Kilde: habr.com
