【发布时间】:2021-05-05 12:59:27
【问题描述】:
CREATE TABLE costs (
id SERIAL PRIMARY KEY,
event_date DATE,
country VARCHAR,
channel VARCHAR,
costs DECIMAL
);
INSERT INTO costs
(event_date, country, channel, costs)
VALUES
('2020-02-08', 'DE', 'channel_01', '400'),
('2020-02-08', 'DE', 'channel_02', '400'),
('2020-02-08', 'DE', 'channel_03', '400'),
('2020-02-08', 'FR', 'channel_01', '400'),
('2020-02-08', 'FR', 'channel_02', '400'),
('2020-02-08', 'NL', 'channel_01', '400'),
('2020-04-15', 'DE', 'channel_01', '300'),
('2020-04-15', 'FR', 'channel_01', '300'),
('2020-04-15', 'NL', 'channel_01', '300'),
('2020-04-15', 'NL', 'channel_02', '300'),
('2020-04-15', 'NL', 'channel_03', '300');
预期结果:
event_date | country | costs |
--------------|--------------|-----------------------------|---------
2020-02-08 | DE | 240 (=400 x 0.6) |
2020-02-08 | FR | 120 (=400 x 0.3) |
2020-02-08 | NL | 40 (=400 x 0.1) |
--------------|--------------|-----------------------------|---------
2020-04-15 | DE | 180 (=300 x 0.6) |
2020-04-15 | FR | 90 (=300 x 0.3) |
2020-04-15 | NL | 30 (=300 x 0.1) |
我想根据预定义的份额将costs拆分为每天每个国家/地区。
股份是:DE = 0.6, FR = 0.3, NL = 0.1
SELECT
c.event_date,
c.country,
c.costs
FROM costs c
GROUP BY 1,2,3
ORDER BY 1,2;
你知道我需要什么查询来实现这个吗?
【问题讨论】:
-
将共享放在另一个表中,将它们连接起来,然后使用这些值进行计算
-
SELECT DISTINCT有什么问题?
标签: sql postgresql