Вот ваш оригинальный запрос:
select pName,Price, (Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname, Quantity, Price;
Теперь вы говорите, что хотите, чтобы оно было сгруппировано только по pName. Итак, давайте сделаем это.
select pName,Price, (Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
Теперь, конечно, это даст ошибку. Таким образом, мы должны поместить агрегацию в другие столбцы. Имеет смысл суммировать столбец SalesValues.
select pName,Price, SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
Колонка Price все еще остается проблемой. Какой агрегатор имеет для этого смысл? Это просто зависит. Вы могли бы сделать MAX, MIN или AVERAGE, я думаю. Но на самом деле его нужно либо исключить, либо добавить обратно в группу. Если он добавлен обратно в группу, то у вас больше не будет отдельной строки для каждого pName. Если вы добавите агрегатор для Prince, то обязательно измените имя столбца, чтобы отразить его значение.
/* Leave out the Price completely. (My favorite option.) */
select pName,SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
/* Group by Price. You now have multiple rows per pName. */
select pName,Price, SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname, Price;
/* Average the Price. (OK, but could lead to confusion.) */
select pName,AVG(Price) as AveragePrice, SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
/* Max Price. (Almost useless). */
select pName,MAX(Price) as MaximumPrice, SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
/* Min Price. (Almost useless). */
select pName,MIN(Price) as MinimumPrice, SUM(Price*Quantity) as SalesValues from saleslog where
BillDate='12-10-2010' and pGroup=15 group by pname;
Однако я не рекомендую агрегировать Price (особенно MAX и MIN), поскольку это может привести к путанице в будущем, когда люди попытаются использовать это значение.