Skip to content

Commit 8fc82b2

Browse files
authored
Update examples & add community install directions
1 parent fe79431 commit 8fc82b2

File tree

1 file changed

+64
-1
lines changed

1 file changed

+64
-1
lines changed

README.md

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,33 @@ Yardstick adds **measure-aware SQL** to DuckDB. Measures are aggregations that k
1414

1515
```sql
1616
-- Load the extension
17-
LOAD 'yardstick';
17+
INSTALL yardstick FROM community;
18+
LOAD yardstick;
19+
20+
-- Create the sales table
21+
CREATE TABLE sales (
22+
id INTEGER PRIMARY KEY,
23+
year INTEGER,
24+
region VARCHAR(50),
25+
amount DECIMAL(10, 2)
26+
);
27+
28+
-- Insert sample data
29+
INSERT INTO sales (id, year, region, amount) VALUES
30+
(1, 2023, 'North', 15000.00),
31+
(2, 2023, 'North', 22000.00),
32+
(3, 2023, 'South', 18000.00),
33+
(4, 2023, 'South', 12000.00),
34+
(5, 2023, 'East', 25000.00),
35+
(6, 2023, 'West', 19000.00),
36+
(7, 2024, 'North', 28000.00),
37+
(8, 2024, 'North', 31000.00),
38+
(9, 2024, 'South', 21000.00),
39+
(10, 2024, 'South', 16000.00),
40+
(11, 2024, 'East', 33000.00),
41+
(12, 2024, 'East', 29000.00),
42+
(13, 2024, 'West', 24000.00),
43+
(14, 2024, 'West', 27000.00);
1844

1945
-- Create a view with measures
2046
CREATE VIEW sales_v AS
@@ -35,6 +61,43 @@ SEMANTIC SELECT
3561
AGGREGATE(revenue) / AGGREGATE(revenue) AT (ALL region) AS pct_of_year
3662
FROM sales_v
3763
GROUP BY year, region;
64+
65+
-- Variance from the global average
66+
SEMANTIC SELECT
67+
region,
68+
AGGREGATE(revenue) AS revenue,
69+
AGGREGATE(revenue) AT (ALL) / 4.0 AS expected_if_equal, -- 4 regions
70+
AGGREGATE(revenue) - (AGGREGATE(revenue) AT (ALL) / 4.0) AS variance
71+
FROM sales_v
72+
GROUP BY region;
73+
74+
-- Nested percentages (% of year, and that year's % of total)
75+
SEMANTIC SELECT
76+
year,
77+
region,
78+
AGGREGATE(revenue) AS revenue,
79+
100.0 * AGGREGATE(revenue) / AGGREGATE(revenue) AT (ALL region) AS pct_of_year,
80+
100.0 * AGGREGATE(revenue) AT (ALL region) / AGGREGATE(revenue) AT (ALL) AS year_pct_of_total
81+
FROM sales_v
82+
GROUP BY year, region;
83+
84+
-- Compare 2024 performance to 2023 baseline for each region
85+
SEMANTIC SELECT
86+
region,
87+
AGGREGATE(revenue) AT (SET year = 2024) AS rev_2024,
88+
AGGREGATE(revenue) AT (SET year = 2023) AS rev_2023,
89+
AGGREGATE(revenue) AT (SET year = 2024) - AGGREGATE(revenue) AT (SET year = 2023) AS growth
90+
FROM sales_v
91+
GROUP BY region;
92+
93+
-- Filter to specific segments
94+
SEMANTIC SELECT
95+
year,
96+
AGGREGATE(revenue) AS total_revenue,
97+
AGGREGATE(revenue) AT (SET region = 'North') AS north_revenue,
98+
AGGREGATE(revenue) AT (SET region IN ('North', 'South')) AS north_south_combined
99+
FROM sales_v
100+
GROUP BY year;
38101
```
39102

40103
## Syntax

0 commit comments

Comments
 (0)