|
Сводная таблица
|
|||
---|---|---|---|
#18+
Всем доброго дня, друзья. Я пока ещё нуб в sql запросах, прошу помочь или наставить на путь истинный. Написал запрос SELECT to_char(cc.date, 'YYYY-MM'), ca.company, sum(cc.total_with_vat), cc.account, cc.service FROM cc left join ca on cc.account = ca.account where cc.account like '200%' and cc.service ='IP' and ca.company like '%Новосибирск%' group by to_char(cc.date, 'YYYY-MM'), cc.account, cc.service, ca.company Всё это выгружается в формате: 2016-01|Новосибирск|300|1|IP 2016-01|Новосибирск|500|2|IP .. |Новосибирск|800|3|IP Мне нужно эти данные выгрузить в эксель, проблема в том, чтобы выгрузить историю, необходимо выгружать около 10 раз, используя limit и offset, чтобы по количеству строк влазило на лист экселя как можно сделать так, чтобы таблица выгружалась в формате, где даты будут в стобцах, то есть: 2016-01|2016-02 и т.д., а в строках соответственно остальные показатели, таким образом можно всё выгрузить за один запрос. Почитал в интернете инфу, всё написано достаточно сложно для моего восприятия, поскольку я пока что не знаю многих тонкостей. Если есть у кого свободные 10-15 минут, уделите время или киньте ссылок, где это более менее доступным языком описано (именно на базе postgresql) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 08:03 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
1.А выгрузить один раз, а потом уже в EXELe разбить по страницам? 2. пивот. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 08:10 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
o.makarov, в общем случае - простых путей нет. в частных случаях - можно использовать PIVOT, либо его "самодельные" аналоги через CASE и группировку. Примитивные и интуитивно-понятные вариант реализации можно посмотреть тут , или тут . не совсем по PostgreSQL, но смысл вполне себе ясен... ;) Если число столбцов заведомо неизвестно, то смотреть в сторону динамического запроса... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 08:13 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, поясните, если не сложно, я выгружаю через pg_admin в csv, потом когда открываю файл через эксель, он пишет, что данные обрезаны из-за того, что строк не хватает Вообще конечно хочу научиться в формате сводной делать, но пока такой вариант тоже подойдёт ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 08:15 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Щукина Анна, спасибо, обязательно почитаю) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 08:16 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
надо крупно написать на форуме: ПОКАЖИТЕ ИСХОДНЫЕ ТАБЛИЦЫ И ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ только тогда вам смогут помочь превратили приличное место в форум телепатов, тьфу ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 11:36 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
tip78, запрос: SELECT to_char(cc.date, 'YYYY-MM'), ca.company, sum(cc.total_with_vat), cc.account, cc.service FROM cc left join ca on cc.account = ca.account where cc.account like '200%' and cc.service ='IP' and ca.company like '%Новосибирск%' group by to_char(cc.date, 'YYYY-MM'), cc.account, cc.service, ca.company Что выгружает: to_char base_company sum account_number service2016-01 Сибирские Сети Новосибирск 300 2E+12 IP2016-01 Сибирские Сети Новосибирск 300 2E+12 IP2016-01 Сибирские Сети Новосибирск 635 2E+12 IP Что нужно: base_company account_number 2016-01 2016-02 2016-03 2016-04 2016-05 2016-06 2016-07 2016-08 2016-09 2016-10 2016-11Сибирские Сети Новосибирск 2E+12 300 300 300 300 300 300 300 300 300 300 300Сибирские Сети Новосибирск 2E+12 45039 8194 3175 635 635Сибирские Сети Новосибирск 2E+12 300 300 300 300 300 300 300 300 300 300 300 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 13:38 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
tip78, запрос: SELECT to_char(cc.date, 'YYYY-MM'), ca.company, sum(cc.total_with_vat), cc.account, cc.service FROM cc left join ca on cc.account = ca.account where cc.account like '200%' and cc.service ='IP' and ca.company like '%Новосибирск%' group by to_char(cc.date, 'YYYY-MM'), cc.account, cc.service, ca.company Что выгружает: to_char base_company sum account_number service2016-01 Новосибирск 300 2E+12 IP2016-01 Новосибирск 300 2E+12 IP2016-01 Новосибирск 635 2E+12 IP Что нужно: base_company account_number 2016-01 2016-02 2016-03 2016-04 2016-05 2016-06 2016-07 2016-08 2016-09 2016-10 2016-11Новосибирск 2E+12 300 300 300 300 300 300 300 300 300 300 300Новосибирск 2E+12 45039 8194 3175 635 635 Новосибирск 2E+12 300 300 300 300 300 300 300 300 300 300 300 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 13:41 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
o.makarov982183, поясните, если не сложно, я выгружаю через pg_admin в csv, потом когда открываю файл через эксель, он пишет, что данные обрезаны из-за того, что строк не хватает Вообще конечно хочу научиться в формате сводной делать, но пока такой вариант тоже подойдёт Какая версия екселя? Сколько строк в оькрываемом буфере? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 14:42 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
o.makarov, таблицы исходные непонятно же нихрена, что за "cc.account like '200%'", а в результатах его НЕТ почему в таблице и в запросе разные поля, и почему такой GROUP BY, можно же было по ca.account группировать ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2018, 16:48 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
tip78, ну смотрите - есть список данных: дата, номер, сумма, регион Эти данные хранятся в базе в таком формате, что на одну дату (и уж тем более на один месяц) приходится несколько сумм по номерам. Мне нужно, чтобы на один месяц был один номер с общей суммой, поэтому я делаю сумм и группирую по дате, иначе выгрузиться намного больший массив по строкам. Но поскольку этих номеров очень много, даже при учёте группировке, в идеале нужно, чтобы дата была в столбцах (аналогично сводной таблице), а поскольку я sql только вот начал изучать самостоятельно, я очень многого не знаю. В скриптах, которые я находил в интернете, попросту не могу разобраться, не хватает мне пока ещё знаний и тонкостей синтаксиса. Во вложении скрин запроса и таблицы (на like можете не обращать внимание, это вывод номеров, которые мне нужны, этот оператор особой роли не играет) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 05:21 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, Эксель 2016, в итоговом csv файле где-то 5-6 млн строк ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 05:22 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
tip78, Если группировать по аккаунтам, то будет один аккаунт - одна сумма в общем за все периоды, а мне нужна один аккаунт - одна сумма на каждый месяц (то есть сумма за январь, февраль, март и т.д. по каждому аккаунту) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 05:26 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Сводную таблицу, лучше делать в клиентской части, возможно в том же экселе или еще чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 05:49 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
o.makarov в итоговом csv файле где-то 5-6 млн строк Теперь понятно. Может легче будет сменить инструмент? EXCEL явно не то, на чем обрабатываются такие объемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 05:50 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183o.makarov в итоговом csv файле где-то 5-6 млн строк Теперь понятно. Может легче будет сменить инструмент? EXCEL явно не то, на чем обрабатываются такие объемы. Если к Excel, прицепить этот CSV в качестве источника данных, то при построении сводной таблицы, он будет использовать все данные (если результирующих строк будет больше 1М+, то он результат обрежет, но вроде предупреждение выдаст, что не может все отобразить), не скажу что это ему легко дастся, но работать с ними, он вполне в состоянии. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 05:57 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
o.makarovtip78, Если группировать по аккаунтам, то будет один аккаунт - одна сумма в общем за все периоды, а мне нужна один аккаунт - одна сумма на каждый месяц (то есть сумма за январь, февраль, март и т.д. по каждому аккаунту) Группировать тебе надо по акаунту, а периоды вывести или через PIVOT или через CASE Примерно так: SELECT CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-1" THEN sum(cc.total_with_vat) END as 2018-1, CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-2" THEN sum(cc.total_with_vat) END as 2018-2, ,,, CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-12" THEN sum(cc.total_with_vat) END as 2018-12, синтаксис на PostgreSQL точно на подскажу ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 06:03 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
angel_zar, Насчёт экселя, конечно проще, но мне в принципе и самому интересно, как можно строить сводные в самом SQLе По поводу прицепить csv файл в качестве источника - интересный вариант, строк будет меньше миллиона, не знал, что так можно. Спасибо, попробую) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 06:05 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
angel_zarЕсли к Excel, прицепить этот CSV в качестве источника данных, то при построении сводной таблицы, он будет использовать все данные Не знал. Надо попробовать. Но явно ему такие извращения не нужны. Идея переписать запрос правильная. Направление с PIVOT либо CASE Анна ему подсказала. Осталось немного напрячься и сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 06:06 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, Не понимаю пока что - что это и что будет в результате, но спасибо, я попробую сейчас с этим разобраться) От экселя никуда не уйти, да и куда уйти, я кроме экселя и гугл таблиц похожих интерфейсов не встречал, а конечные пользователи, для которых формируется отчёт - работают в экселе ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 06:09 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183SELECT CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-1" THEN sum(cc.total_with_vat) END as 2018-1, CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-2" THEN sum(cc.total_with_vat) END as 2018-2, ,,, CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-12" THEN sum(cc.total_with_vat) END as 2018-12, вру Примерно так: SELECT sum(CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-1" THEN cc.total_with_vat END) as "2018-1", sum(CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-2" THEN cc.total_with_vat END) as "2018-2", ,,, sum(CASE WHEN to_char(cc.date, 'YYYY-MM'), ="2018-12" THEN cc.total_with_vat END) as "2018-12", ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 06:10 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, Подскажите, пожалуйста, а после того, как все CASE заданы, далее я просто дописываю в SELECT то что мне нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 06:12 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Да, убираешь из группировки to_char(cc.date, 'YYYY-MM') и вставляешь в SELECT то же самое через CASE ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 07:25 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, таким образом должно выглядеть? Оставшиеся колонки (сервис, компания и номер) просто дописываются или тоже через CASE? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:25 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
1. Не прилагай фото, приложи текст. 2. Запятая у меня лишняя после 'YYYY-MM') ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:29 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
3. SUM не там. я ранее исправился. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:30 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, SELECT sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-1" THEN churn_charges.total_with_vat END) as 2016-1, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-2" THEN churn_chargestotal_with_vat END) as 2016-2, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-3" THEN churn_charges.total_with_vat END) as 2016-3, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-4" THEN churn_charges.total_with_vat END) as 2016-4, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-5" THEN churn_charges.total_with_vat END) as 2016-5, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-6" THEN churn_charges.total_with_vat END) as 2016-6, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-7" THEN churn_charges.total_with_vat END) as 2016-7, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-8" THEN churn_charges.total_with_vat END) as 2016-8, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-9" THEN churn_charges.total_with_vat END) as 2016-9, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-10" THEN churn_charges.total_with_vat END) as 2016-10, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-11" THEN churn_charges.total_with_vat END) as 2016-11, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2016-12" THEN churn_charges.total_with_vat END) as 2016-12, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-1" THEN churn_charges.total_with_vat END) as 2017-1, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-2" THEN churn_charges.total_with_vat END) as 2017-2, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-3" THEN churn_charges.total_with_vat END) as 2017-3, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-4" THEN churn_charges.total_with_vat END) as 2017-4, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-5" THEN churn_charges.total_with_vat END) as 2017-5, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-6" THEN churn_charges.total_with_vat END) as 2017-6, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-7" THEN churn_charges.total_with_vat END) as 2017-7, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-8" THEN churn_charges.total_with_vat END) as 2017-8, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-9" THEN churn_charges.total_with_vat END) as 2017-9, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-10" THEN churn_charges.total_with_vat END) as 2017-10, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-11" THEN churn_charges.total_with_vat END) as 2017-11, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2017-12" THEN churn_charges.total_with_vat END) as 2017-12, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2018-1" THEN churn_charges.total_with_vat END) as 2018-1, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2018-2" THEN churn_charges.total_with_vat END) as 2018-2, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2018-3" THEN churn_charges.total_with_vat END) as 2018-3, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM'), ="2018-4" THEN churn_charges.total_with_vat END) as 2018-4, churn_charges.account_number, churn_accounts.base_company, churn_charges.service FROM public.churn_charges left join churn_accounts on churn_charges.account_number = churn_accounts.account_number where churn_charges.account_number like '200%' and churn_charges.service ='IP' and churn_accounts.base_company like '%Новосибирск%' group by churn_charges.account_number, churn_charges.service, churn_accounts.base_company; ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:32 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
4. Попробуй на одном месяце. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:32 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:35 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, Вот так должно выглядеть?) И вопрос ещё, в таком случае дата вообще в группировке не участвует? SELECT sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM') = "2016-1" THEN churn_charges.total_with_vat END) as 2016-1, churn_charges.account_number, churn_accounts.base_company, churn_charges.service FROM public.churn_charges left join churn_accounts on churn_charges.account_number = churn_accounts.account_number where churn_charges.account_number like '200%' and churn_charges.service ='IP' and churn_accounts.base_company like '%Новосибирск%' and to_char(churn_charges.charge_date, 'YYYY-MM') between '2016-01-01' and '2016-01-31' group by churn_charges.account_number, churn_charges.service, churn_accounts.base_company; ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:38 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Ты просил "где даты будут в столбцах" Соответственно дат в группировке нет ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:42 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, Попробовал, не работает пока, к сожалению. Ладно, посижу потыкаю код, что-нибудь да получится Спасибо огромное вам, что уделили время и за помощь. Если получится, отпишу сюда, как оно должно всё же выглядеть) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:43 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Может не 2016-1, а 2016-02 ? Какую ошибку пишет? Я в синтаксисе PostgreSQL не силен. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:47 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, а pg никаких ошибок не выдаёт, просто пустое поле, где должны быть итоговые данные запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:53 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Попробуй 2016-10 Убери период из фильтра ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 08:59 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
+ двойные кавычки убери ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 09:06 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, Пробовал и с фильтром и без, кавычки тоже убирал, пока тишина) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 09:09 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Вот так заработало: http://www.sqlfiddle.com/#!17/fd14d/1 Код: sql 1. 2. 3. 4. 5. 6.
Убери минус из имени поля, и начни его с буквы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 09:11 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, Про минус что-то не понял SELECT churn_charges.account_number, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM') = '2016-10' THEN churn_charges.total_with_vat END) as 2016-10, sum(CASE WHEN to_char(churn_charges.charge_date, 'YYYY-MM') = '2016-11' THEN churn_charges.total_with_vat END) as 2016-11 FROM public.churn_charges group by churn_charges.account_number; Так всё равно не пашет, может в с датой что-то не так ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 09:26 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, ну и у меня стоит 10 версия, а не 9.6, хотя по идее вряд ли они синтаксисом могут отличаться ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 09:48 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
o.makarov, Не as 2018-01 A as p201801 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 10:00 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, действительно, после этого запустился, сейчас запрос по всей истории запустить. Спасибо вам большое, что потратили столько времени и решили мою проблему, без вас бы я долго разбирался. Добра вам и позитива!) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 11:32 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Как текучку сделаешь, пробуй переписать всё на PIVOT. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 11:35 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
982183, хорошо, обязательно перепишу, пока что там просто много всего непонятного, когда читал первый раз об этом, со временем разберусь, мне это интересно ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2018, 11:39 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Еще раз напишу, с изменением количества месяцев, это на PG получится динамический PIVOT. Это лучше делать на клиенте, например в SSRS есть такой компонент, Matrix и не надо ни чего городить в запросе, запрос возвращает нужную информацию, а как ее отобразить (развернуть) это уже проблема клиентской части. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 07:03 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Есть скорость получатся приемлемая, то почему бы и нет. Если тормозить будет, что лучше в SSRS передавать уже собранные/свернутые/агрегированные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 07:40 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
Другое дело, а есть необходимость пересчитывать старые месяца, или достаточно пересчитать текущий и предпоследний? Данные задним числом правят? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 07:48 |
|
Сводная таблица
|
|||
---|---|---|---|
#18+
o.makarov, psql версии 10+ может делать пивотирование через `\crosstabview` команду: https://www.postgresql.org/docs/current/static/app-psql.html https://wiki.postgresql.org/wiki/Crosstabview ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2018, 10:58 |
|
|
start [/forum/topic.php?all=1&fid=53&tid=1995741]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 173ms |
0 / 0 |