#sql #sql-server #tsql
#sql #sql-сервер #tsql
Вопрос:
Это моя таблица.
CREATE TABLE [dbo].[Ventes](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Région] [nvarchar](20) NULL,
[pays] [nvarchar](20) NULL,
[CAMensuel] [int] NOT NULL
) ON [PRIMARY]
GO
Я хочу создать запрос, который возвращает сумму CAMensuel. Но я также использую функцию NTILE().
Я попытался выполнить этот запрос query
select*, sum(CAMENSUEL) , NTILE(2) over(partition by Région order by sum (Région) ) as [ntil] from ventes
Но это возвращает эту ошибку :
Столбец ‘продажи.Идентификатор’ недопустим в списке выбора, поскольку он не содержится в агрегатной функции или в предложении GROUP BY .
Как я могу это сделать, пожалуйста?
Спасибо
Комментарии:
1. Примеры данных и ожидаемые результаты помогут нам помочь вам. Однако ошибка сообщает вам о проблеме, но я подозреваю, что a
GROUP BY
само по себе — это не то, что вам нужно; поскольку у вас есть aSELECT *
и, следовательно, группировка по каждому столбцу была бы бессмысленной. Возможно, вашSUM
также должен быть оконным?
Ответ №1:
Этот запрос является запросом агрегирования:
select v.*,
sum(CAMENSUEL) ,
NTILE(2) over (partition by Région order by sum(Région) ) as [ntil]
from ventes v;
Она содержит несколько ошибок. Во-первых, использование select *
в запросе агрегации обычно является ошибкой. Во-вторых, нет GROUP BY
. В-третьих, предположительно, region
это не то, что можно было бы агрегировать.
Я бы предположил, что вы намереваетесь сделать что-то вроде этого:
select v.region,
sum(CAMENSUEL) ,
NTILE(2) over (order by sum(CAMENSUEL)) as tile
from ventes v
group by region;
Это агрегирует по регионам и добавляет tile
значение, равное 1 или 2, в зависимости от суммы CAMENSUEL
.
Ответ №2:
Обновление, я нашел решение
select région, Pays , sum (CAMENSUEL) over (Partition by Région order by id ) as [SUM_CA_MENSUEL], ntile (2) over(order by id) as NTIL
от ventes
Комментарии:
1. Это связано с тем, что по какой-либо причине
NTILE
недоступна как агрегатная функция, только как оконная функция. ТакSUM
что потребности также должны быть