hive 获取上年同比
时间: 2023-11-30 18:41:09 浏览: 72
详解hbase与hive数据同步
以下是在Hive中获取上年同比的方法:
```sql
-- 引用[1]中的SQL语句用于计算去年的日期
-- 引用[2]中的SQL语句用于创建示例数据表
-- 首先,我们需要计算去年的日期
WITH last_year AS (
SELECT DATE_SUB(CAST(MAX(date) AS DATE), 365) AS last_year_date
FROM order_info
),
-- 然后,我们可以使用JOIN将去年的数据和今年的数据进行比较
this_year AS (
SELECT name, SUM(cost) AS this_year_cost
FROM order_info
WHERE YEAR(orderdate) = YEAR(CURRENT_DATE())
GROUP BY name
)
SELECT this_year.name, this_year.this_year_cost, last_year.this_year_cost AS last_year_cost,
ROUND((this_year.this_year_cost - last_year.this_year_cost) / last_year.this_year_cost * 100, 2) AS YoY_growth_rate
FROM this_year
JOIN (
SELECT name, SUM(cost) AS last_year_cost
FROM order_info
WHERE YEAR(orderdate) = YEAR(last_year.last_year_date)
GROUP BY name
) last_year
ON this_year.name = last_year.name;
```
上述代码中,我们首先使用`WITH`子句计算去年的日期,然后使用`JOIN`将去年和今年的数据进行比较,最后计算同比增长率。具体来说,我们使用`SUM`函数计算今年和去年每个人的总花费,然后将它们连接起来,最后计算同比增长率。`ROUND`函数用于将增长率保留两位小数。
阅读全文