powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Возможно ли Pivot с несколькими агрегатными функциями
22 сообщений из 22, страница 1 из 1
Возможно ли Pivot с несколькими агрегатными функциями
    #39395132
Надо и SUM и COUNT одновременно...
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395169
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александра77,
гугл "PIVOT on two or more fields in SQL Server" и тп
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395220
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александра77Надо и SUM и COUNT одновременно...Выбросить PIVOT куда подальше
и написать SUM(CASE WHEN ... THEN ... ELSE 0 END) и SUM(CASE WHEN ... THEN 1 ELSE 0 END)
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395544
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александра77Надо и SUM и COUNT одновременно...

не получиться. Партянку с CASE-ам придется расписывать.

Если такие задачи встречаются часто, смотрите в сторону OLAP-кубов. MDX и DAX раскладывают поля по горизонтали и вертикали легко.
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395554
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александра77,

можно если вас конечно получившийся вид смущать не будет, так как скуль не клиент и как эксель многоуровневые шапки не длеает, так что приводите датасет к такому виду:
column1_sum, value
column1_count, value
column2_sum, value
column2_count, value
column3_sum, value
column3_count, value
и далее pivot
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395563
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninЕсли такие задачи встречаются часто, смотрите в сторону OLAP-кубов.

Excel своими PivotTables очень неплохо справляется с обязанностями OLAP и может неплохо работать с достаточно большими простынями. Я в своё время делал широкую простыню View и скармливал Excel'ю, который юзер сам себе обновлял по требованию
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395565
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шыфлa_voroninЕсли такие задачи встречаются часто, смотрите в сторону OLAP-кубов.

Excel своими PivotTables очень неплохо справляется с обязанностями OLAP и может неплохо работать с достаточно большими простынями. Я в своё время делал широкую простыню View и скармливал Excel'ю, который юзер сам себе обновлял по требованию
что такое "достаточно большая простыня" с ограничением в 1кк строк?
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395581
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

а вот и нет, если использовать источник данных, то строк может быть намного больше, чем 1кк. Он их не хранит в виде строк, а оперирует именно как с множеством, которое можно двойным кликом drill-down к исходным данным.
Ну, по крайней мере в те времена, когда в Excel было всего 64к строк, я таким образом вынимал по ODBC 250к строк данных и сворачивал в Pivot. В левом нижнем углу прям счётчик бежал, когда данные обновлялись (у слову, довольно медленно).
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395597
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шыфл,

при этом надо закладывать, что вся это радость падает на плечи клиентских компьютеров(достаточно средних по большей части), а радость падает немалая как на оперативку, так и на ЦП
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395610
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александра77,

какой-то тут трёп ни о чём.
Сделайте хотя бы простой пример с данными (скрипт создания таблиц и INSERT тестовых данных в эти таблицы)
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395649
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шыфлa_voroninЕсли такие задачи встречаются часто, смотрите в сторону OLAP-кубов.

Excel своими PivotTables очень неплохо справляется с обязанностями OLAP и может неплохо работать с достаточно большими простынями. Я в своё время делал широкую простыню View и скармливал Excel'ю, который юзер сам себе обновлял по требованию

До 5-10 миллионов -- с большим скрипом -- да. На 100 лимонов Excel он ляжет. Если вы собрались сказать, что Excel заменит SSAS, то я с вами сильно не соглашусь.
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395755
лолл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin,

интересно, а зачем такие объемы возвращать клиенту? любой пользователь ляжет вместе с Экселем, пытаясь переварить столько информации :)
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395769
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лоллa_voronin,

интересно, а зачем такие объемы возвращать клиенту? любой пользователь ляжет вместе с Экселем, пытаясь переварить столько информации :)

Речь идет не об объемах, возвращаемых клиенту. Речь идет об объемах, которые может переварить, праггрегировать и разложить по измерениям соответствующий движок. Если бы Excel мог это сделать, то я бы не работал там, где сейчас работаю.
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395850
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39395902
Коллеги, всем спасибо!!!
Совет WarAnt очень подойдёт, подгоню выборку и переверну.
alexeyvg , ваш совет видела, все просто супер! Выборка исправлена и освоена новая команда ;)
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39396345
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninШыфлпропущено...
Excel своими PivotTables очень неплохо справляется с обязанностями OLAP и может неплохо работать с достаточно большими простынями.
До 5-10 миллионов -- с большим скрипом -- да. На 100 лимонов Excel он ляжет. Если вы собрались сказать, что Excel заменит SSAS, то я с вами сильно не соглашусь.

Я говорил, что Excel справляется с обязанностями OLAP - это примерно так, как Access справляется с обязанностями SQL сервера.

Вообще, для проверки скармил Excel'ю
Код: sql
1.
2.
3.
4.
5.
6.
7.
 create view t
 as 
 select top 1000000000  rand(checksum(newid())) * 1000 a 
from 
master.sys.all_columns a cross join 
master.sys.all_columns b cross join 
master.sys.all_columns c



Грузил он медленно (сса 200к записей/с) , в процессе загрузки выжрал все имеющиеся 6,2GB памяти и 25% процессора(1 из 4 ядер, больше, видимо, не умеет), и упал - счётчик остановился на 536858230. Очевидно, памяти не хватило.
Тогда я уменьшил top до 200 000 000 но добавил колонок
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 alter view t
 as 
 select top 200000000  
rand(checksum(newid())) * 1000 a, 
a.object_id, 
a.column_id 
from 
master.sys.all_columns a 
cross join master.sys.all_columns b  
cross join master.sys.all_columns c


Данные загрузились в 5GB, судя по счётчику, но при расчётах память опять упёрлась в 6GB и повисло.

Тогда топ уменьшился до 100 000 000, и данные влезли в 3,8GB. И ОНО ЗАРАБОТАЛО!
Т.е. конечно несчадно тормозило и любая операция с таблицей забивала память до 5GB, но работало, считало сумму, колличество, разбивало всё по объектам и колонкам - как надо быть! Несмотря на то, что размер сохранённого файла больше 1GB

Так что для целого класса задач, где исходных данных 150к-10кк OLAP можно заменить эксцелем. А если подключить элементарную серверную преагрегацию, то всё ещё веселее :)

a_voronin Если бы Excel мог это сделать, то я бы не работал там, где сейчас работаю.
Я тоже сейчас работаю там, где строят OLAP кубы. Но раньше мне хватало Excel'я, поэтому испытываю к нему самые тёплые чувства
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39396360
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шыфл,

это настолько узкий пример для olap что аж не прилично
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39396389
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKто настолько узкий пример для olap что аж не прилично

А что тут узко, кроме генерированых данных? Ну нет у меня под рукой 10кк бизнес-данных.

Ради вас добавил колонок, и снизил топ до 10кк
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
alter view t
 as 
 select top 10000000  
rand(checksum(newid())) * 1000 a, 
a.*
from 
master.sys.all_columns a 
cross join master.sys.all_columns b  
cross join master.sys.all_columns c


Файл уменьшился до 100Mb, всё почти летает - крути не хочу. Т.е. тем, у кого исходных данных меньше 1кк записей можно вообще не париться - делаешь простыню View со всеми справочниками, вставляешь YEAR, MONTH, DAY на даты и вуаля - практически полноценный мультиразмерный куб у пользователя в эксцеле, пусть балуется. И никакого SSAS и MDX
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39396413
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШыфлТак что для целого класса задач, где исходных данных 150к-10кк OLAP можно заменить эксцелем. А если подключить элементарную серверную преагрегацию, то всё ещё веселее :)

a_voroninЕсли бы Excel мог это сделать, то я бы не работал там, где сейчас работаю.
Я тоже сейчас работаю там, где строят OLAP кубы. Но раньше мне хватало Excel'я, поэтому испытываю к нему самые тёплые чувстваВообще для экселя некоторое время назад появилась надстройка Power Pivot.
Это превращает эксель в один из лучших, если не лучший, клиент для OLAP.
Как я понимаю, он вполне может и обрабатывать большие объёмы, т.е. это не просто "клиент визуализации".
Правда, я знаком с Power Pivot в теории, сам не применял.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Возможно ли Pivot с несколькими агрегатными функциями
    #39716331
И_Павел_С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени!
Простите, что может не по теме, но у меня очень схожий вопрос.
Есть простой пример использования PIVOT, который показывают на учебной базе NorthWind
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT CompanyName, [Beverages], [Condiments], [Confections], [Dairy Products], [Grains/Cereals], [Meat/Poultry], [Produce], [Seafood]
FROM (
	  SELECT SUP.CompanyName, CAT.CategoryName AS [Категория товара], PR.UnitPrice
	  FROM Northwind..Suppliers AS SUP
	  INNER JOIN
		   Northwind..Products AS PR
	  ON SUP.SupplierID = PR.SupplierID
	  INNER JOIN
		  Northwind..Categories AS CAT
	  ON PR.CategoryID = CAT.CategoryID
) AS MyTab
pivot
	 (AVG(MyTab.UnitPrice) FOR [Категория товара] IN ([Beverages], [Condiments], [Confections], [Dairy Products], [Grains/Cereals], [Meat/Poultry], [Produce], [Seafood])) AS MyReport


Здесь мы видим, что транспонируемые столбцы взяты из колонки CategoryName таблицы Categories.
Теперь пожалуйста представьте, что у меня еще таблица, например CostCategory, с категориями по цене, и мне нужно получить по ним агрегацию в этом запросе.
То есть запрос по идее должен выглядеть приблизительно вот так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT CompanyName, [Beverages], [Condiments], [Confections], [Dairy Products], [Grains/Cereals], [Meat/Poultry], [Produce], [Seafood], [LowCost], [MediumCost], [HighCost] -- Добавленные ценовые катеогрии
FROM (
	  SELECT SUP.CompanyName, CAT.CategoryName AS [Категория товара], PR.UnitPrice, CT.CostCategory AS [Ценовая категория]
	  FROM Northwind..Suppliers AS SUP
	  INNER JOIN
		   Northwind..Products AS PR
	  ON SUP.SupplierID = PR.SupplierID
	  INNER JOIN
		  Northwind..Categories AS CAT
	  ON PR.CategoryID = CAT.CategoryID
          INNER JOIN
		  Northwind..CostCategory AS CT -- добавленный JOIN
	  ON PR.CostCategoryID = CT.CostCategoryID
) AS MyTab
pivot
	 (AVG(MyTab.UnitPrice) FOR [Категория товара] IN ([Beverages], [Condiments], [Confections], [Dairy Products], [Grains/Cereals], [Meat/Poultry], [Produce], [Seafood]),
FOR [Ценовая категория] IN ([LowCost], [MediumCost], [HighCost]) -- вот собственно и главный вопрос. Можно ли в FOR перечислить столбцы?
) AS MyReport


Понятно, что в таком варианте идет синтаксическая ошибка, но возможно ли вообще такое?
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39716496
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И_Павел_С,

нужно, кроме "добавленный JOIN", - "добавленный UNION"
типа этого что-то
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
...
FROM (
	  SELECT SUP.CompanyName, CAT.CategoryName AS [Категория товара], PR.UnitPrice
	  FROM Northwind..Suppliers AS SUP
	  INNER JOIN
		   Northwind..Products AS PR
	  ON SUP.SupplierID = PR.SupplierID
	  INNER JOIN
		  Northwind..Categories AS CAT
	  ON PR.CategoryID = CAT.CategoryID

union all

	  SELECT SUP.CompanyName, CT.CostCategory  AS [Ценовая категория], PR.UnitPrice
	  FROM Northwind..Suppliers AS SUP
	  INNER JOIN
		   Northwind..Products AS PR
	  ON SUP.SupplierID = PR.SupplierID
	  INNER JOIN
		  Northwind..Categories AS CAT
	  ON PR.CategoryID = CAT.CategoryID
          INNER JOIN
		  Northwind..CostCategory AS CT -- добавленный JOIN
	  ON PR.CostCategoryID = CT.CostCategoryID
) AS MyTab
...
...
Рейтинг: 0 / 0
Возможно ли Pivot с несколькими агрегатными функциями
    #39716603
И_Павел_С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,
Спасибо большое за идею. Попробую ее применить. А я из ситуации вышел немного по другому, я просто создал две вьюхи, а потом переJOINил их.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Возможно ли Pivot с несколькими агрегатными функциями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]