SQL学习进展顺利。现在在需要帮助的地方练习。
我想获得与纽约的员工的订单数不同的员工的姓名。
表格:
[ORDERS
,其中包括EMPLOYEE_ID, CITY, ORDER_ID
[EMPLOYEES
,其中包括LAST_NAME, FIRST_NAME, EMPLOYEE_ID, CITY
我被困在这种情况下:
SELECT ROW_NUMBER() OVER ( ORDER BY COUNT(T.ORDER_ID) DESC) ROW,
(H.LAST_NAME + ', ' + H.FIRST_NAME) 'Employee name',
COUNT(T.ORDER_ID) 'Sold orders', H.CITY 'City'
FROM ORDERS T JOIN EMPLOYEE H ON T.EMPLOYEE_ID = H.EMPLOYEE_ID
GROUP BY H.EMPLOYEE_ID, H.LAST_NAME, H.FIRST_NAME, H.CITY
因此,我可以获得员工已出售的订单。不幸的是,它没有显示具有0个订单的员工。
如何显示0个订单的员工?我该如何显示与一个城市的员工相比拥有不同订单数的员工?与纽约的员工拥有不同订单的示例员工。
希望您能理解我的意思。问题复杂,语言障碍少。
我认为您只想要一个left join
:
select
row_number() over ( order by count(o.order_id) desc) rn,
e.last_name + ', ' + e.first_name employee_name,
count(o.order_id) sold_orders,
e.city
from employee e
left join orders o on o.employee_id = e.employee_id
group by e.employee_id, e.last_name, e.first_name, e.city