以Doris数据库创表语句
占比和组内占比
占比
占比
:占比是指某一部分在整体中所占的比例。
例如,如果你有一个产品销售数据表,你想知道每种产品的销售额占总销售额的比例,那么你就可以计算每种产品的销售额占比。
组内占比
组内占比
:组内占比是指在某一组内,某一部分所占的比例。
例如,如果你想知道在每个地区,每种产品的销售额占该地区总销售额的比例,那么你就可以计算每种产品在其地区的销售额组内占比。
举例
一个名为sales的表,其中包含product(产品)、region(地区)和amount(销售额)列,
你想要计算每个产品的销售额占总销售额的比例(占比),以及每个产品在其地区的销售额占该地区总销售额的比例(组内占比)。
product | region | amount |
---|---|---|
A | East | 100 |
B | East | 200 |
C | East | 300 |
A | West | 100 |
B | West | 200 |
C | West | 300 |
-- 创建sales表
CREATE TABLE sales (
product VARCHAR(255),
region VARCHAR(255),
amount INT
) ENGINE = OLAP
COMMENT "sales" DISTRIBUTED BY HASH(`product`) BUCKETS 3
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"is_being_synced" = "false",
"storage_format" = "V2",
"light_schema_change" = "true",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false"
);
-- 插入数据
INSERT INTO sales (product, region, amount) VALUES
('A', 'East', 100),
('B', 'East', 200),
('C', 'East', 300),
('A', 'West', 100),
('B', 'West', 200),
('C', 'West', 300);
占比的计算方式是
:某一部分的值除以整体的值。
例如,产品A的销售额占总销售额的比例(占比)是:100 ÷ 1200 = 8.33%。
组内占比的计算方式是
:某一部分的值除以组内的值。
例如,产品A在东部地区的销售额占该地区总销售额的比例(组内占比)是:100 ÷ 600 = 16.67%。
SELECT product,
region,
amount,
(amount / SUM(amount) OVER ()) * 100 AS product_sales_ratio,
(amount / SUM(amount) OVER (PARTITION BY region)) * 100 AS region_sales_ratio
FROM sales
order by product;
product | region | amount | product_sales_ratio | region_sales_ratio |
---|---|---|---|---|
A | East | 100 | 8.33% | 16.67% |
B | East | 200 | 16.67% | 33.34% |
C | East | 300 | 25.00% | 50.00% |
A | West | 100 | 8.33% | 16.67% |
B | West | 200 | 16.67% | 33.34% |
C | West | 300 | 25.00% | 50.00% |