querying techniques—Joins, GroupBy, Having