złączenia zewnętrzne SELECT loc, empname FROM dept LEFT JOIN emp USING (deptno); aliasy Nazwisko pracownika i jego szefa SELECT e1.ename, e2.ename FROM emp AS e1, emp AS e2 WHERE e1.mgr=e2.empno; Ilu pracowników mają menadżerowie? SELECT mgr, COUNT(*) FROM emp GROUP BY mgr; SELECT e1.mgr, COUNT(*) FROM emp e1 JOIN emp e2 USING (empno) GROUP BY e1.mgr; SELECT e1.mgr, e2.empno, e2.ename, COUNT(*) FROM emp e1 JOIN emp e2 ON e1.mgr = e2.empno GROUP BY e1.mgr; SELECT e2.ename, COUNT(*) FROM emp e1 JOIN emp e2 ON e1.mgr = e2.empno GROUP BY e1.mgr; Podzapytania skorelowane !!!! Wyznaczyć osobę z maksymalnym zarobkiem w każdej grupie SELECT deptno, ename, sal FROM emp e1 WHERE sal = (SELECT MAX(sal) FROM emp WHERE deptno = e1. deptno) ORDER BY deptno; Zapytania w części FROM Zarobki w porównaniu ze średnią SELECT ename, sal, a FROM emp, (SELECT ROUND(AVG(sal),2) a FROM EMP) avg; SELECT ename, sal - a FROM emp, (SELECT ROUND(AVG(sal),2) a FROM EMP) avg; Długość łańcucha / Sortowanie wg długości length() SELECT DISTNICT job FROM emp ORDER by LENGTH(job); Porównywanie łańcuchów SELECT ename, ename > 'KOWALSKY', ename < 'KOWALSKY' FROM emp; SELECT ename FROM emp WHERE ename BETWEEN 'CLINTON' AND 'OBAMA'; Podłańcuchy SELECT ename, SUBSTR(ename,1,3) FROM emp; SELECT ename, SUBSTR(ename,4) FROM emp; SELECT ename, SUBSTR(ename,-2) FROM emp; SELECT ename, SUBSTR(ename,-4,2) FROM emp; Łączenie łańcuchów SELECT ename || ' works in '|| loc FROM emp JOIN dept USING (deptno); Zamiana łańcuchów REPLACE Data/Czas SELECT STRFTIME("%Y",hiredate) AS year FROM emp ORDER BY year; Elementy z wartością maksymalną Trzy najwyższe wynagrodzenia SELECT ename, sal FROM emp WHERE sal IN (SELECT DISTINCT sal FROM emp ORDER BY sal DESC LIMIT 3); Przykład - Podsumowanie podróży CREATE TABLE trip_log( seq INTEGER, city TEXT, miles INTEGER ); INSERT INTO trip_log VALUES(1,'San Antonio, TX',0); INSERT INTO trip_log VALUES(2,'Dallas, TX',263); INSERT INTO trip_log VALUES(3,'Benton, AR',566); INSERT INTO trip_log VALUES(4,'Memphis, TN',745); INSERT INTO trip_log VALUES(5,'Portageville, MO',878); INSERT INTO trip_log VALUES(6,'Champaign, IL',1164); INSERT INTO trip_log VALUES(7,'Madison, WI',1412); SELECT seq, city, miles FROM trip_log ORDER BY seq; +-----+------------------+-------+ | seq | city | miles | +-----+------------------+-------+ | 1 | San Antonio, TX | 0 | | 2 | Dallas, TX | 263 | | 3 | Benton, AR | 566 | | 4 | Memphis, TN | 745 | | 5 | Portageville, MO | 878 | | 6 | Champaign, IL | 1164 | | 7 | Madison, WI | 1412 | +-----+------------------+-------+ SELECT t1.city AS start, t2.city AS stop, t2.miles-t1.miles AS miles FROM trip_log t1, trip_log t2 WHERE t1.seq+1 = t2.seq ORDER BY t1.seq;