Я создал свою таблицу.Я пытаюсь создать запрос, который умножается и добавляется sold_quantity из таблицы sold и sale_price из таблицы on_sale, и на данный момент он называется R1, а retail_price из таблицы продуктов и sold_quantity из таблицы sold теперь называется R2.
В моем запросе я хочу рассчитать свой доход.Подвох в том, что есть две разные даты, но одно количество продажи.Это означает, что мне довольно сложно различить два типа продаж (продажа со скидкой, розничная продажа).
Например, 1 февраля у меня идет распродажа, я продал 10 штук, и цена была продана как sale_price, а дата сохранена как sale_date, см. Таблицу On_sale.2 февраля я продал 8 штук, но проданная цена сохраняется как розничная цена и сохраняется как проданная дата.
CREATE TABLE Sold (
store_number int(16) NOT NULL AUTO_INCREMENT,
pid int(16) NOT NULL,
sold_date date NOT NULL,
sold_quantity int(16) NOT NULL,
PRIMARY KEY (pid,store_number,sold_date)
);
CREATE TABLE Store (
store_number int(16) NOT NULL AUTO_INCREMENT,
phone_number varchar(16) NOT NULL DEFAULT '0',
street_address varchar(250) NOT NULL,
city_name varchar(250) NOT NULL,
state varchar(250) NOT NULL,
PRIMARY KEY (store_number)
);
CREATE TABLE On_sale (
pid int(16) NOT NULL,
sale_date date NOT NULL,
sale_price float(16) NOT NULL,
PRIMARY KEY (pid,sale_date)
);
CREATE TABLE Product (
pid int(16) NOT NULL,
product_name varchar(250) NOT NULL,
retail_price float(16) NOT NULL,
manufacture_name varchar(250) NOT NULL,
PRIMARY KEY (pid)
);
CREATE TABLE City (
city_name varchar(250) NOT NULL,
state varchar(250) NOT NULL,
population int(16) NOT NULL DEFAULT '0',
PRIMARY KEY (city_name,state)
);
Это то, что я хочу:
SAMPLE DATA :
Store
таблица:
store_number phone_number street_address city_name state
1 # ### New York NY
2 # ### HOUSTON TX
3 # ### L.A CA
Sold
Таблица:
store_number PID SOLD DATE SOLD_QUANTITY
1 1 2/2/2017 3
2 2 2/3/2018 3
3 3 2/5/2019 4
On_sale
Таблица:
PID SALE_DATE SALE PRICE
1 2/4/2018 2
Product
Таблица:
PID PRODUCT NAME RETAIL_PRICE manufacture_name
1 XX 5 XXX
2 XX 4 XXX
3 XX 3 XXX
City
Таблица:
CITY_NAME STATE POPULATION
New York NY 100
HOUSTON TX 200
L.A CA 201
ИСКЛЮЧЕННЫЙ РЕЗУЛЬТАТ :
YEAR REVENUE POPULATION
2017 15 (NEW YORK)SMALL
2018 14 (HOUSTON)MEDIUM
2019 12 (L.A) LARGE
Объяснениеиз моих данных
Это очень запутанно.Сначала мне нужно отобразить год на основе проданной даты и даты продажи, а затем рассчитать доход.Например, в 2018 году сумма возмещения составляет (2 от sale_price таблицы on_sale) + (12 (3 * 4, 3 - проданное количество от sold_table, а 4 - розничная цена) = 14.
размер города разделен диапазонами, где 0> # <100 - маленький 100> = x <200 - средний, а все, что больше 200, - большое. Название города в скобках просто для отслеживания. Город основан на названии городаи состояние в таблице магазина, и это делается путем сравнения store_number как для проданной таблицы, так и для таблицы магазина </p>
. Это требует, чтобы я присоединился к таблице городов после запроса, чтобы получить R1 (обычная цена) и R2 (по цене продажи).Вот что я получил. Я очень потерян:
SELECT year(s.sold_date) as yr, c.population,
SUM(COALESCE(os.sale_price, p.retail_price) * s.sold_quantity) AS revenue,
CASE
WHEN population >= 0 AND population < 3700000 THEN 'small'
WHEN population >= 3700000 AND population < 6700000 THEN 'medium'
WHEN population >= 6700000 AND population < 9000000 THEN 'large'
WHEN population >= 9000000 THEN 'extra_large'
ELSE '-1'
END AS cityCategory
FROM Sold s JOIN
Product p
ON s.pid = p.pid JOIN
Store st
ON st.store_number = s.store_number LEFT JOIN
On_sale os
ON s.pid = os.pid JOIN
city c
ON c.city_name = st.city_name
GROUP BY year(s.sold_date), c.population
ORDER BY year(s.sold_date) ASC, c.population;