Some assumptions need to be made for this exercise. One, customer entries are not unique at the annual transaction level so I average the two. Also, Not all customers contain user details so i thought including all data even where user details are not available would be valuable with a additional union after the join on sale and customer join.
P.S. pipes are (Shift+\), not (ctrl+\).