SQL显示一个表中的数据并计算另一表中的结果

时间:2018-11-07 15:30:02

标签: sql oracle

我是SQL的初学者。我的作业有问题。

我需要编写一个显示以下信息的Select语句。 -员工姓名(Ename) -员工身份证号(EIC_NO) -付款记录总数 -仅针对拥有超过100条付款记录的员工显示以上信息

我认为问题在于我需要呈现的数据属于2个单独的表。这些表的结构如下:

表1名称 雇员 列名: Employee_ID(主键), Ename(第二个密钥), EIC。

表2名称 付款 列名: PYMT_ID(主键), PYMT_Timestamp, PYMT_method, Booking_id, Emp_ID(Employee表的外键,与Employee_ID相同)。

我的代码在下面。但这行不通。

SELECT e.employee_id, e.ename, COUNT(p.emp_ID=e.employee_id)
FROM employee e, payment p
HAVING COUNT(p.emp_ID=e.employee_id) >100;

感谢有人可以协助我。谢谢。 :)

3 个答案:

答案 0 :(得分:1)

您应使用group by将所有付款emp_ID分组。

  select p.emp_ID, e.ename, COUNT(*)
    from employee e, payment p
   where p.emp_ID=e.employee_id
group by p.emp_ID, e.ename
  having count(*) > 100;

答案 1 :(得分:-1)

选择e.employee_id AS ID,e.ename AS名称,COUNT(p.employee_id)AS TotalPaymentRecs

从e员工的内部员工中提取工资,在e.employee_id = p.employee_id上​​支付

按e.employee_id,e.ename分组

拥有TotalPaymentRecs> 100

答案 2 :(得分:-1)

SELECT e.employee_Id, e.ename, COUNT(p.emp_id)
From Employee as e
INNER JOIN Payement as p
ON e.employee_id = p.emp_id
GROUP BY e.employee_id, e.ename, p.emp_id
HAVING COUNT(p.emp_id) > 100