[SELECT Id, ContractNumber,
(SELECT Id, WhoId, WhatId, ActivityDate, createdby.name FROM ActivityHistories)
Fields on related objects (objects that you have a lookup to) can be referenced via dot notation in soql. You can find more information about this here:
Client applications need to be able to query for more than a single
type of object at a time. SOQL provides syntax to support these types
of queries, called relationship queries, against both standard objects
and custom objects.
Relationship queries traverse parent-to-child and child-to-parent
relationships between objects to filter and return results. They are
similar to SQL joins. However, you cannot perform arbitrary SQL joins.
The relationship queries in SOQL must traverse a valid relationship
path as defined in the rest of this section.
You can use relationship queries to return objects of one type based
on criteria that applies to objects of another type, for example,
“return all accounts created by Bob Jones and the contacts associated
with those accounts.” There must be a parent-to-child or
child-to-parent relationship connecting the objects. You can’t write
arbitrary queries such as “return all accounts and users created by