我有一个包含文件“订单”和“员工”的数据库。在 “orders” 文件中,有有关订单 id、客户 id、员工 id (显示关闭订单的员工的 id)、订单日期等信息。在 “employees” 文件中,有信息关于员工 ID、姓氏、名字等。目标是每年找到最佳员工。
我正在 google collab 上做 SQL。
假设最好的员工是完成最多订单的员工。
我想要的结果代码是简单的代码和简单的功能,以便初学者理解代码。
有什么建议吗?如果能得到一个带有详尽解释的解决方案那就太好了。
谢谢!
我解决了同样的问题,但只解决了 1997 年的问题(1997 年最佳员工)。 对于当前的问题,我尝试做
WHERE orderdate LIKE "1996%" OR "1997%" OR "1998%"
,但没有成功。
我的问题代码仅针对 1997 年。
sql= '''
SELECT
firstname, lastname,
emps.employeeid, COUNT(emps.employeeid) AS "Total orders"
FROM orders
LEFT JOIN employees AS emps
ON orders.employeeid = emps.employeeid
WHERE orderdate LIKE "1997%"
GROUP BY emps.employeeid
ORDER BY "Total orders" DESC
LIMIT 1
'''
request(sql)
首先确保日期字段是日期类型。其次,避免对日期文字使用双引号 ("),因为单引号 (') 是 SQL 数据库中更常见的语法。此外,请确保日期字段中没有前导或尾随空格。例如,' 2019 ' 或 ' 2020'。如果存在,您可能需要使用 TRIM 函数来删除这些空格。您也可以探索 SQL CTE's...但是,您也可以尝试:
SELECT
e.firstname, e.lastname,
o.employeeid,
COUNT(o.orderid) AS "Total orders",
YEAR(o.orderdate) AS "Year"
FROM
orders o
LEFT JOIN employees e ON o.employeeid = e.employeeid
GROUP BY
e.employeeid, YEAR(o.orderdate)
ORDER BY
YEAR(o.orderdate) ASC, "Total orders" DESC;