For speed, I've always used the concept that the less tables you have to link into a query on an indexed table, the faster your results. You pay a speed price for each table you link into a query and for me the question would be, do I store the field in the main table (making it flatter, faster and more flexible for grouping) versus relational and slower returns linking in 1 or more tables to get the values. Obviously though you don't want a completely flat table without relational ones. Just flat on the commonly used fields you group on. I may end up duplicating data in the relational table (for quick returns on the fewer fields in the relational table) but for putting together many grouping combinations, I index and include those grouping fields in the main table which gives me 1 table with many options to total on (similar to a summary table). There is a balance on doing this and you have to determine the right combination of fields to include in the main table but correct me if I'm wrong that every linked table in a query is slower than if that field where in the main table and you didn't need to use the linked table.
In my situation, I needed to often group and total on a multitude of fields (which also had relational tables holding those values as well). It may not be the "correct" technique but I could produce very fast results from dozens of combinations of fields on quite a few million records. Of course, correct indexing always plays a big factor.