
SELECT
D.name AS '부서명',
IFNULL(count(E.id), 0) AS '사원수'
FROM dept AS D
LEFT JOIN emp AS E
ON E.deptId = D.id
GROUP BY D.id;
INSERT INTO emp SET name = "김철수", deptId = 3, salary = 5000;
CREATE TABLE project (
id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(50) NOT NULL,
regDate datetime NOT NULL DEFAULT now()
);
INSERT INTO project SET name = "전산 고도화";
INSERT INTO project SET name = "전산 유지보수";
CREATE TABLE project_detail (
id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
regDate datetime NOT NULL DEFAULT now(),
projectId int UNSIGNED NOT NULL,
expense int UNSIGNED NOT NULL,
empId int UNSIGNED NOT null
);
INSERT INTO project_detail SET projectId = 1, expense = 1000, empId = 1;
INSERT INTO project_detail SET projectId = 1, expense = 500, empId = 4;
INSERT INTO project_detail SET projectId = 2, expense = 1000, empId = 1;
INSERT INTO project_detail SET projectId = 2, expense = 500, empId = 3;
INSERT INTO project_detail SET projectId = 2, expense = 1000, empId = 4;
SELECT * FROM project_detail;
SELECT
E.name AS '사원명',
IFNULL(P.name, '미참여') AS '프로젝트명',
ifnull(PD.expense, 0) AS '비용'
FROM project_detail AS PD
RIGHT JOIN project AS P
ON PD.projectId= P.id
RIGHT JOIN emp AS E
ON PD.empId = E.id
ORDER BY P.id;
SELECT
GROUP_CONCAT(E.name) AS '참여 사원 리스트',
IFNULL(P.name, '미참여') AS '프로젝트명',
ifnull(sum(PD.expense), 0) AS '비용합산'
FROM project_detail AS PD
RIGHT JOIN emp AS E
ON PD.empId = E.id
RIGHT JOIN project AS P
ON P.id = PD.projectId
GROUP BY p.id;