RE: marketing list based on sales
This is unconfirmed, but the first question would be on what version of CRM Online are you? If you are on Dynamics 365 9.0, you could create a virtual entity that would link to the GP data and would retrieve the required data from GP on demand.
You would then see if you create a view/join between the CRM Contact and GP Customer data to get the sales data that you are looking for. If you are not on v9, you would have to create a separate entity in CRM to store the data from GP and try to perform the same join.
If the regular query works for you, you can then try to do the same using a Marketing List.
We have done this for our D365 v8.2 customer for getting Vendor, Purchase Order and Invoice/Payment information from GP to CRM.
Hope this helps you.