SQL 显示一张表中的数据并计算另一张表中的结果
Posted
技术标签:
【中文标题】SQL 显示一张表中的数据并计算另一张表中的结果【英文标题】:SQL Display data from one table and count results from another table 【发布时间】:2018-11-07 15:30:02 【问题描述】:我是 SQL 初学者。我的作业有问题。
我需要编写一个显示以下信息的 Select 语句。 - 员工姓名(Ename) - 员工身份证号码 (EIC_NO) - 支付记录总数 - 仅对支付记录超过 100 条的员工显示上述信息
我认为问题在于我需要呈现的数据属于 2 个单独的表。这些表格的结构如下:
表 1 名称 员工 列名: Employee_ID(主键), Ename(辅助键), EIC。
表 2 名称 支付 列名: PYMT_ID(主键), PYMT_时间戳, PYMT_方法, 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;
感谢是否有人可以在这方面帮助我。谢谢你。 :)
【问题讨论】:
查看内部连接,不要使用逗号分隔的表名,使用连接 @Brad,OP 正在做一个内部连接,一个隐式连接。 【参考方案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;
【讨论】:
【参考方案2】:选择 e.employee_id AS ID、e.ename AS Name、COUNT(p.employee_id) AS TotalPaymentRecs
FROM Employees as e INNER JOIN Payments as p ON e.employee_id = p.employee_id
按 e.employee_id、e.ename 分组
拥有 TotalPaymentRecs > 100
【讨论】:
不要只转储代码,还要解释你做了什么以及它为什么起作用。在How to Answer 上阅读更多信息。【参考方案3】: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
【讨论】:
感谢所有解决方案!非常感激! :)以上是关于SQL 显示一张表中的数据并计算另一张表中的结果的主要内容,如果未能解决你的问题,请参考以下文章