【问题标题】:Oracle - Count Function (Orders Sold By each employee)Oracle - 计数功能(每个员工销售的订单)
【发布时间】:2018-09-07 14:22:13
【问题描述】:

在弄清楚如何显示显示 2 列的结果时遇到问题;一个是员工ID,第二个是该员工销售的订单。

有问题的 2 个表是 EmployeesOrders。每个中的主键称为EmployeeIDOrderIDOrders 中包含外键 EmployeeID。我假设我需要使用 COUNT 函数来计算总共有多少订单,但是 JOIN 并找出如何将员工 ID 与它联系起来让我失去了兴趣。

到目前为止我所拥有的一切:

SELECT e.employeeid, COUNT(Orders) AS 'Count'
FROM Employees e
JOIN Orders o ON e.Employeeid = o.Employeeid
GROUP BY e.employeeid;

【问题讨论】:

  • 所以你的代码输出错误?向我们展示您的代码的输出以及您希望输出的样例。
  • 也许试试这个? ``` SELECT e.employeeid, COUNT(*) AS 'Count' FROM Employees e LEFT JOIN Orders o ON e.Employeeid = o.Employeeid GROUP BY e.employeeid; ```
  • 真的不需要join吗?为什么不直接按员工 ID 从订单组中计数?

标签: sql oracle join count


【解决方案1】:

你的查询很好,唯一的问题就是你不能统计一个表,所以把COUNT(Orders)改成COUNT(o.*)或者COUNT(o.OrderID)

SELECT e.employeeid, COUNT(o.OrderID) AS OrderCount
FROM Employees e
JOIN Orders o ON e.Employeeid = o.Employeeid
GROUP BY e.employeeid;

不建议使用像COUNT 这样的关键字作为标识符,所以我将其更改为OrcerCount,但如果你真的想要,它可以与'Count' 一起使用。

这个查询只会给你有订单的员工(至少一个订单)。如果要包括没有任何订单的员工,请将JOIN 更改为LEFT JOIN

【讨论】:

  • 当我尝试像这样运行它时,我收到错误:ORA-00979: not a GROUP BY expression,有什么想法吗?
  • 从答案中完全复制查询。你不应该得到这样的错误。
【解决方案2】:

如果订单表中有外键,为什么还要查看员工,除非您需要员工提供的特定信息。我会做这样的事情。

select employeeid, count(*) from Orders group by employeeid; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    相关资源
    最近更新 更多