我是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;
感谢有人可以协助我。谢谢。 :)
答案 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