powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не могу понять логику
3 сообщений из 3, страница 1 из 1
Не могу понять логику
    #40098840
Adlet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте вчера дали задачу в 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
проблема в том что на выходи он не правильно считает
можете подсказать
...
Рейтинг: 0 / 0
Не могу понять логику
    #40098842
Adlet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Не могу понять логику
    #40098853
Adlet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот полный скрипт
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
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не могу понять логику
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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