1
SELECT pnumber, pname, COUNT(*)
FROM project 
INNER JOIN works_on ON pno=pnumber 
INNER JOIN department ON dnumber=dnum
GROUP BY pnumber

現在、mysql はプロジェクトの番号と名前、およびそれに取り組んでいる従業員の数を返します。私がやりたいことは、mysql が部門 5 の従業員のみをカウントすることです。つまり、さまざまな部門の人がプロジェクトに取り組んでいますが、すべてではなく部門 5 の従業員のみをカウントする必要があります。

4

3 に答える 3

2

使用できますWHERE

SELECT pnumber, pname, COUNT(*)
FROM project 
JOIN works_on ON pno = pnumber 
JOIN department ON dnumber=dnum
WHERE dnumber = 5
GROUP BY pnumber

編集

SELECT pnumber, pname, COUNT(*),SUM(IF(dnumber=5, 1, 0)) AS count5 
FROM project 
JOIN works_on ON pno = pnumber 
JOIN department ON dnumber=dnum
GROUP BY pnumber
于 2013-11-03T08:46:34.517 に答える
2

節を使用するという Barmar と Shafeeq の提案がWHEREうまくいかない場合 (たとえば、結果にすべての部門を含める必要があるが、部門 5 の人のみをカウントする必要がある場合)、これを使用できます。

 SUM(IF(dnum=5, 1, 0)) AS CountFromDepartment5

したがって、次のようになります。

SELECT pnumber, pname, COUNT(*) AS TotalCount,  SUM(IF(dnum=5, 1, 0)) AS CountFromDepartment5
FROM project 
INNER JOIN works_on ON pno=pnumber 
INNER JOIN department ON dnumber=dnum
GROUP BY pnumber
于 2013-11-03T08:49:40.747 に答える
0

WHERE必要な部門を指定する句を使用します。

SELECT pnumber, pname, COUNT(*)
FROM project 
INNER JOIN works_on ON pno=pnumber 
WHERE dnumber = 5
GROUP BY pnumber

department部門番号も外部キーとしてworks_onテーブルに存在するため、と結合する必要はありません。

于 2013-11-03T08:48:01.000 に答える