https://www.youtube.com/watch?v=yOp-8QGSUMM

DROP TABLE IF EXISTS Employees;

CREATE TABLE Employees
(
EmployeeID  INTEGER,
License     VARCHAR(100) 
);

INSERT INTO Employees (EmployeeID, License) VALUES
(1,'Class A'),(1,'Class B'),(1,'Class C'),
(2,'Class A'),(2,'Class B'),(2,'Class C'),
(3,'Class A'),(3,'Class D'),
(4,'Class A'),(4,'Class B'),(4,'Class D'),
(5,'Class A'),(5,'Class B'),(5,'Class D');

SELECT * FROM Employees

Pasted image 20241224210255.png
WITH

WITH CTE AS(
SELECT 
	EMPLOYEEID,
    COUNT(1) as ecnt
FROM employees
group by employeeid
)
,cte2 as (
SELECT 
	e.employeeid as employeeid,
    e1.employeeid as employee_id,
    COUNT(*) as cnt,
    c1.ecnt as cnt1,
    c2.ecnt as cnt2
FROM Employees e left join employees e1 on e.license = e1.license and e.employeeID != e1.employeeid
JOIN cte c1 on c1.employeeid = e.employeeid
JOIN cte c2 on c2.employeeid = e1.employeeid
GROUP BY e.employeeid,e1.employeeid,cnt1,cnt2
HAVING cnt = cnt1 and cnt = cnt2
)

select 
	employeeid as `Employee id`, employee_id as `Employee id`,cnt as count
FROM cte2