SOQL doesn't support 'as' keyword in aliasing. You can alias a table like

    select o.subscriberykey, o.storname, o.orderid from salesorder o;

Also you should use **Aggregate Functions** in your case. Aggregate functions in SOQL, such as AVG(), SUM() and MAX(), allow you to roll up and summarize your data in a query.

    AggregateResult[] groupedResults = [SELECT AVG(Amount)aver FROM Salesorder];
    Object avgAmount = groupedResults[0].get('aver');

> Note that any query that includes an aggregate function returns its
> results in an array of AggregateResult objects. AggregateResult is a
> read-only sObject and is only used for query results.

An example of Aggregate Function with a Group By clause. This is not the exact solution you are looking for as I don't know your data model. This is just for representation of an aggregate function which returns AggregateResult

    AggregateResult result:[SELECT status__c status, Count(Id) Sum, subscriber__c subscriber FROM Salesorder WHERE status__c IN ('Fulfilled', 'Received') GROUP BY status__c, subscriber__C];