0

よし、練習用テーブル「employees」ができた。これには次の属性がある: fname (ファーストネーム)、lname (ラストネーム)、bdate (生年月日)、salary、dno (部門番号)。

小さなタスクは、各部門のすべての従業員をリストアップし、その部門ごとにグループ化し、年齢が最も高い部門ごとにリーダーを選択することです。

各部門で最も古い生年月日しか抽出できませんが、部門で最も古い男の名と姓を引き出すことはできません。私はこの行を書きました:

SELECT dno,COUNT(*),MIN(bdate) FROM employees GROUP BY dno;

生年月日の代わりに、生年月日が最も低い従業員の名と姓を書き込む方法がわかりません。

手伝って頂けますか?すぐに覚えますが、マニュアルはあまりよく理解できません。HAVING関数を使用する必要があると思います。

4

2 に答える 2

4
select e.dno, e.fname, e.lname, em.Count
from employees e
inner join (
    select dno, min(bdate) as minbdate, count(*) as Count
    from employees
    group by dno
) em on e.dno = em.dno and e.bdate = em.minbdate
于 2012-09-28T15:55:41.620 に答える
1
select e.dno, total, e.bdate, fname, lname
from (
        SELECT 
            dno,
            COUNT(*) as total,
            MIN(bdate) as bdate,
        from employees
        GROUP BY dno
    ) s
    inner join
    employees e on e.dno = s.dno and e.bdate = s.bdate
order by dno
于 2012-09-28T16:00:49.357 に答える