JSON DATA 추출
SELECT JSON_OBJECT('empno',empno,'empname',empname)
AS JASONDATA
FROM emp;
INNER JOIN
SELECT c.id, cu.name, i.name, i.price, (c.num * i.price) FROM cart c
INNER JOIN cust cu ON c.custid = cu.id
INNER JOIN item i ON c.itemid = i.id
WHERE i.price > 15000;
SELECT cu.name, ROUND(AVG(c.num * i.price)) AS iavg FROM cart c
INNER JOIN cust cu ON c.custid = cu.id
INNER JOIN item i ON c.itemid = i.id
GROUP BY cu.name
HAVING iavg >= 100000;
SELECT t.titleno, e.empname ,d.deptname ,t.titlename FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
INNER JOIN title t ON e.titleno = t.titleno
ORDER BY titleno;
SELECT d.deptname, AVG(e.salary)FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
INNER JOIN title t ON e.titleno = t.titleno
GROUP BY d.deptname;
OUTER JOIN
SELECT * FROM emp e
RIGHT OUTER JOIN title t ON e.titleno = t.titleno;
SELECT * FROM emp e
LEFT OUTER JOIN title t ON e.titleno = t.titleno;
SELECT * FROM emp e
RIGHT OUTER JOIN title t ON e.titleno = t.titleno
UNION
SELECT * FROM emp e
LEFT OUTER JOIN title t ON e.titleno = t.titleno;
SELECT e.empname, d.deptname, t.titlename FROM emp e
LEFT OUTER JOIN title t ON e.titleno = t.titleno
LEFT OUTER JOIN dept d ON e.deptno = d.deptno;
CROSS JOIN
SELECT * FROM emp e
CROSS JOIN title t;
SELF JOIN
SELECT * FROM emp;
SELECT e1.empname,e2.empname FROM emp e1
INNER JOIN emp e2 ON e1.manager = e2.empno;
SELECT e1.empname,e2.empname FROM emp e1
LEFT OUTER JOIN emp e2 ON e1.manager = e2.empno;
SELECT e1.empname,d.deptname,t.titlename,e2.empname AS managerName FROM emp e1
LEFT OUTER JOIN emp e2 ON e1.manager = e2.empno
LEFT OUTER JOIN title t ON e1.titleno = t.titleno
LEFT OUTER JOIN dept d ON e1.deptno = d.deptno;
WORK SHOP
SELECT * FROM emp;
SELECT empname,salary,(salary*0.1) AS tax FROM emp;
SELECT * FROM emp
WHERE YEAR(hdate) < 2001
AND salary >= 4000;
SELECT * FROM emp
WHERE empname LIKE '%자%'
AND manager IS NOT NULL;
SELECT empname, salary,
CASE
WHEN salary >= 4000 THEN '고'
WHEN salary >= 2000 OR salary < 4000 THEN '중'
ELSE '하'
END AS LEVEL
FROM emp;
SELECT d.deptname, AVG(salary) AS deptAsalary FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
GROUP BY d.deptname
HAVING deptAsalary >= 3000;
SELECT * FROM title;
SELECT d.deptname, t.titlename ,AVG(salary) AS deptAsalary FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
INNER JOIN title t ON e.titleno = t.titleno
GROUP BY d.deptname, t.titlename
HAVING t.titlename = '사원' OR t.titlename = '대리'
AND deptAsalary >= 2500;
SELECT AVG(salary) FROM emp
WHERE YEAR(hdate) >= 2000
AND YEAR(hdate) <= 2002;
SELECT deptno, SUM(salary) AS sum FROM emp
GROUP by deptno
ORDER BY SUM DESC;
SELECT empname, deptloc FROM emp e
LEFT OUTER JOIN dept d ON e.deptno = d.deptno
WHERE deptloc = '서울';
SELECT e.empname, d.deptname FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
WHERE d.deptno = ( SELECT e.deptno FROM emp e
WHERE e.empname ='이영자');
SELECT e.empname, t.titlename FROM emp e
INNER JOIN title t ON e.titleno = t.titleno
WHERE t.titleno = (SELECT e.titleno FROM emp e
WHERE e.empname ='김강국');
SELECT e.empno,e.empname,t.titlename,d.deptname,d.deptloc FROM emp e
LEFT OUTER JOIN dept d ON e.deptno = d.deptno
LEFT OUTER JOIN title t ON e.titleno = t.titleno
WHERE YEAR(hdate) >= 2000;
SELECT d.deptname, AVG(salary) AS dsalary FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
GROUP BY d.deptname
having dsalary >= 3000;
SELECT d.deptloc, AVG(salary) AS locsalary FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
GROUP BY d.deptloc
HAVING deptloc = '대구';
SELECT e.empname, d.deptname,period_diff( DATE_FORMAT(NOW(),'%Y%m'), DATE_FORMAT(e.hdate,'%Y%m') ) AS workMonth FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
WHERE d.deptno = (SELECT e.deptno FROM emp e
WHERE e.empname = '홍영자');
SELECT e.empname, d.deptname, t.titlename, e.hdate FROM emp e
LEFT OUTER JOIN dept d ON e.deptno = d.deptno
LEFT OUTER JOIN title t ON e.titleno = t.titleno
ORDER BY e.hdate;
댓글