|
Не могу понять логику
|
|||
---|---|---|---|
#18+
Здравствуйте вчера дали задачу в Excel не могу понять формулу в Exal Вот формула =ЕСЛИ(AC27=0;Z27/СУММЕСЛИМН(Z:Z;Q:Q;Q27;AC:AC;0);0) Вот логика в SQl SELECT * ,sum([Ср.доля на полке, %]) OVER (PARTITION BY [АДРЕС ]) * 100 AS DO FROM CTE5 ) SELECT * ,CASE WHEN ([ Длина на полке, см ] IS NULL) THEN [Ср.доля на полке, %] / [DO] END AS [Доля больших, %] FROM CTE6 проблема в том что на выходи он не правильно считает можете подсказать ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2021, 06:50 |
|
Не могу понять логику
|
|||
---|---|---|---|
#18+
вот полный скрипт USE [PLA] SELECT * ,(([Количество (в базовых ед#)] / [Кол-во]) * 100) AS Dolya ,ceiling(([Количество (в базовых ед#)] / [Кол-во]) * [ДЛ#ПОЛКИ]) AS cm ,floor(ceiling(([Количество (в базовых ед#)] / [Кол-во]) * [ДЛ#ПОЛКИ]) / [Длина]) AS Face ,floor(([ГЛ#ПОЛКИ] / [глубина ]) * (ceiling(([Количество (в базовых ед#)] / [Кол-во]) * [ДЛ#ПОЛКИ]) / [Длина])) AS QuantFace ,floor([ГЛ#ПОЛКИ] / [глубина ]) AS GlubinaFace ,([ДЛ#ПОЛКИ] * [ГЛ#ПОЛКИ]) AS [Площадъ полки,cm2] ,floor([Длина] * [глубина ]) AS [Площадь товара, см2] ,(([Количество (в базовых ед#)] / sum([Количество (в базовых ед#)]) OVER (PARTITION BY [АДРЕС ])) * 100) AS [Доля товара ед., %] ,(([Сумма (упр#)] / sum([Сумма (упр#)]) OVER (PARTITION BY [АДРЕС ])) * 100) AS [Доля товара тг., %] FROM [dbo].[БД$] WHERE [Длина] IS NOT NULL USE [PLA] WITH CTE1 AS ( SELECT * ,([Количество (в базовых ед#)] / [Кол-во]) * 100 AS Dolya ,CEILING(([Количество (в базовых ед#)] / [Кол-во]) * [ДЛ#ПОЛКИ]) AS cm ,FLOOR(CEILING(([Количество (в базовых ед#)] / [Кол-во]) * [ДЛ#ПОЛКИ]) / [Длина]) AS Face ,FLOOR(([ГЛ#ПОЛКИ] / [глубина ]) * CEILING(([Количество (в базовых ед#)] / [Кол-во]) * [ДЛ#ПОЛКИ]) / [Длина]) AS QuantFace ,FLOOR([ГЛ#ПОЛКИ] / [глубина ]) AS GlubinaFace ,[ДЛ#ПОЛКИ] * [ГЛ#ПОЛКИ] AS [Площадъ полки,cm2] ,FLOOR([Длина] * [глубина ]) AS [Площадь товара, см2] ,([Количество (в базовых ед#)] / SUM([Количество (в базовых ед#)]) OVER (PARTITION BY [АДРЕС ])) * 100 AS [Доля товара ед., %] ,([Сумма (упр#)] / SUM([Сумма (упр#)]) OVER (PARTITION BY [АДРЕС ])) * 100 AS [Доля товара тг., %] FROM [dbo].[БД$] ) ,CTE2 AS ( SELECT * ,(([Доля товара ед., %] + [Доля товара тг., %]) / 2 + IIF([Доля товара ед., %] > [Доля товара тг., %], [Доля товара тг., %], [Доля товара ед., %])) / 2 AS [Ср.доли, %] FROM CTE1 ) ,CTE3 AS ( SELECT * ,[Ср.доли, %] / SUM([Ср.доли, %]) OVER (PARTITION BY [АДРЕС ]) AS [Доля на полке, %] ,([Ср.доли, %] / SUM([Ср.доли, %]) OVER (PARTITION BY [АДРЕС ])) * [ДЛ#ПОЛКИ] AS [Кол-во фэйсов на полке, см] ,CEILING((([Ср.доли, %] / SUM([Ср.доли, %]) OVER (PARTITION BY [АДРЕС ])) * [ДЛ#ПОЛКИ]) / [Длина]) AS [Кол-во фэйсов на полке, ед] FROM CTE2 ) ,CTE4 AS ( SELECT * ,ROUND((MIN([Доля на полке, %]) OVER (PARTITION BY [АДРЕС ]) + AVG([Доля на полке, %]) OVER (PARTITION BY [АДРЕС ])) / 2 / 3, 5) AS [Ср.доля на полке, %] FROM CTE3 ) ,CTE5 AS ( SELECT * ,CASE WHEN ([Доля на полке, %] <= [Ср.доля на полке, %]) THEN [Кол-во фэйсов на полке, ед] * [Длина] END AS [ Длина на полке, см ] FROM CTE4 WHERE [Длина] IS NOT NULL ) ,CTE6 AS ( SELECT * ,sum([Ср.доля на полке, %]) OVER (PARTITION BY [АДРЕС ]) * 100 AS DO FROM CTE5 ) SELECT * ,CASE WHEN ([ Длина на полке, см ] IS NULL) THEN [Ср.доля на полке, %] / [DO] END AS [Доля больших, %] FROM CTE6 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2021, 07:35 |
|
|
start [/forum/topic.php?fid=46&fpage=14&tid=1684286]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 262ms |
0 / 0 |