Перечислите всех боссов, у которых есть как минимум 3 сотрудника - PullRequest
0 голосов
/ 22 февраля 2012

Как я могу запросить таблицу ниже, чтобы получить имена всех боссов (например, boss_id = staff_id) у кого как минимум 3 сотрудника? Я использую having, group by, ...?

    CREATE TABLE STAFF (STAFF_ID                    CHAR(3),
                        STAFF_NAME              CHAR(20),
                        GENDER                  CHAR(6),
                        DEPARTMENT              CHAR(20),
                        BOSS_ID                 CHAR(3)
                        SALARY                  NUMBER(8,2))

Спасибо!

Ответы [ 3 ]

2 голосов
/ 22 февраля 2012

Я использую COUNT(*)>3, потому что я предполагаю, что вы имеете в виду 3 сотрудника, кроме самого босса.

SELECT a.staff_name
FROM staff a
INNER JOIN (
  SELECT boss_id,COUNT(*) AS cnt_staff FROM staff GROUP BY boss_id HAVING COUNT(*)>3
) b ON a.boss_id=b.boss_id
WHERE a.staff_id=a.boss_id
1 голос
/ 22 февраля 2012
select S.Boss_ID, X.STAFF_NAME
from STAFF S cross apply (Select staff_name from STAFF S2 where S2.staff_id=S.boss_ID) X
group by S.Boss_ID, X.STAFF_NAME
having count(*)>=3
1 голос
/ 22 февраля 2012
select boss_id, staff_name 
from staff 
group by boss_id, staff_name 
having count(staff_id)>=3
...