以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% |