powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Расчет дохода
2 сообщений из 2, страница 1 из 1
Расчет дохода
    #40118529
Jackson2021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня всем!
Есть у меня задачка такого плана.
Учитывая информацию о продажах в магазине, рассчитать общий доход для каждого дня, месяца, года и продукта.
Вводные данные такие :
В Sales таблице хранятся только даты, для которых были записаны какие-либо данные - sales_details вместо этого в таблице хранится информация об отдельных продажах (что и когда было продано).
В sales_details таблице хранятся итоговые данные по продукту на дату.

Я хочу получить выход product_name, year, month, day (данные)
Доходность по конкретному продукту.

В наличии у меня три таблицы
products,sales,sales_details.
sales | id | int |
| | date | date
---------------------------------------------
sales_details | id | int |
| | sale_id | int |
| | product_id | int |
| | count | int
---------------------------------------------
products | id | int |
| | name | text |
| | price | numeric |
-------------------------------------------------
Я попытался создать вот такую конструкцию :
Условно по товару "молоко"
Представил что есть связка по ID и использовал Inner Join


SELECT product.name as Product_name,

sales.date as Year,

sales.date as Moth,

sales.date as DAY,

SUM (product.price) as Total,

(SELECT COUNT(s.SalesID)

FROM Product p

INNER JOIN Product ON Sales.id = product.id

WHERE product.name = "Молоко") AS EXP

FROM Sales_Details INNER JOIN Sales AS Sales_Details ON Sales_Details.id = Sales.id

WHERE s.date BETWEEN 'Дата1' AND 'Дата2'

GROUP BY DAYOFMONTH(s.date), HOUR(s.date), MONTH(s.date)

Вопрос в чем - прошу кому не трудно помочь мне с моей конструкцией. Может что то с корректировать надо поправить. Буду признателен.
...
Рейтинг: 0 / 0
Расчет дохода
    #40118534
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jackson2021,
не с той стороны заходите, попробуйте проанализировать сначала формулировку "каждого дня, месяца, года и продукта",
по сути это подразумевает что вам нужен разрез групп year(), month(), day(), product_id

исходя из этого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
         sum(p.[price] * sd.[count]) as [qty],
         datepart(yyyy, s.[date]) as [year],
         datepart(mm, s.[date]) as [month],
         datepart(dd, s.[date]) as [day],
         p.[product_id]
from [dbo].[sales] s
       join [sales_details] sd on sd.[sale_id] = s.[id]
             join [products] p on p.[id] = sd.[product_id]
group by datepart(yyyy, s.[date]), datepart(mm, s.[date]), datepart(dd, s.[date]), p.[product_id]



если вам дополнительно нужно подведение итогов по каждому "разрезу" : год, месяц, день, продукт
то смотрите в сторону grouping
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Расчет дохода
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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