2

Employees以下のようにフィールドを持つテーブルがあります。

Employee_name,Employee_id,Employee_status,Employee_loc,last_update_time.

このテーブルには制約がありません。以下のクエリを試しました。

select Employee_name, count(1) 
from Employees 
where Employee_status = 'ACTIVE' 
Group by Employee_name,Employee_loc 
having count(Employee_name) > 1 
order by count(Employee_name)  desc

選択では、私も取得する必要がありEmployee_idます..それを取得する方法について誰か助けてもらえますか?

4

3 に答える 3

4

Employee_idクエリに追加するだけでなく、それをgroup by句に追加することもできます。(各従業員名と各従業員 ID が一意であると仮定すると、グループ化に追加してもクエリ結果に違いはありません)。

グループ化によって違いが生じる場合は、従業員の名前と場所の組み合わせによっては、複数の ID が関連付けられていることを意味します。したがって、おそらく集計関数を使用して、返す ID をクエリで決定する必要があります。

于 2013-04-03T10:27:43.960 に答える
1
SELECT EMPLOYEE_NAME, EMPLOYEE_ID, COUNT(1)
FROM
EMPLOYEES
WHERE
EMPLOYEE_NAME IN
(
SELECT EMPLOYEE_NAME
FROM EMPLOYEES
WHERE Employee_status = 'ACTIVE'
GROUP BY Employee_name,Employee_loc
HAVING COUNT(*) > 1
)
GROUP BY EMPLOYEE_NAME, EMPLOYEE_ID
于 2013-04-03T10:28:23.020 に答える
0

また、partition by 句を使用して、集計に使用している列に関係なく、表示する列を選択することもできます。

ここで非常に短く簡単な説明 - Oracle "Partition By" Keyword

于 2015-10-01T17:06:30.313 に答える