Sql 如何在配置单元中将DAYOFWEEK和WeeOfYear转换为日期

Sql 如何在配置单元中将DAYOFWEEK和WeeOfYear转换为日期,sql,hive,Sql,Hive,我正试图通过分组来计算蜂巢中数周内发生的事件。我想知道的是一年中每个星期六的日期(输出只需要返回我们有数据的几周的结果)和前一周发生的事件数(即,num_events列应该是从周日到周六的事件总数) 所需输出示例: +------------+------------+ | ymd_date | num_events | +------------+------------+ | 2016-01-09 | 42 | | 2016-01-16 | 500 | |

我正试图通过分组来计算蜂巢中数周内发生的事件。我想知道的是一年中每个星期六的日期(输出只需要返回我们有数据的几周的结果)和前一周发生的事件数(即,
num_events
列应该是从周日到周六的事件总数)

所需输出示例:

+------------+------------+
|  ymd_date  | num_events |
+------------+------------+
| 2016-01-09 |         42 |
| 2016-01-16 |        500 |
| 2016-01-23 |       1090 |
| .          |          . |
| .          |          . |
| .          |          . |
| 2016-12-31 |      23125 |
+------------+------------+
但我不知道如何从
WEEKOFYEAR
转换为每个星期六的日期

到目前为止,我所拥有的:

SELECT 
    concat_ws('-', cast(YEAR(FROM_UNIXTIME(time))as string),
        lpad(cast(MONTH(FROM_UNIXTIME(time))as string), 2, '0'), 
        cast(WEEKOFYEAR(FROM_UNIXTIME(time))as string)) as ymd_date,
    COUNT(*) as num_events
FROM 
    mytable
GROUP BY 
    concat_ws('-', cast(YEAR(FROM_UNIXTIME(time))as string),
    lpad(cast(MONTH(FROM_UNIXTIME(time))as string), 2, '0'),
    cast(WEEKOFYEAR(FROM_UNIXTIME(time))as string))
ORDER BY
    ymd_date
电流输出示例:

+------------+------------+
|  ymd_date  | num_events |
+------------+------------+
| 2016-01-1  |         42 |
| 2016-01-2  |        500 |
| 2016-01-3  |       1090 |
| .          |          . |
| .          |          . |
| .          |          . |
| 2016-12-52 |      23125 |
+------------+------------+
我想到目前为止我所知道的都差不多了,但是日期(ymd_date列)显示的是年-月-周-年,而不是年-月-日

关于如何制作每周的
yyyy-mm-dd
有什么想法吗

date_sub(next_day(from_unixtime (time),'SAT'),7)




源数据是什么样子的?一组事件,所有事件都有一个unix时间戳
select      date_sub(next_day(from_unixtime(time),'SAT'),7)     as ymd_date   
           ,count(*)                                            as num_events

from        mytable

group by    date_sub(next_day(from_unixtime(time),'SAT'),7)

order by    ymd_date
hive> select date_sub(next_day(from_unixtime(unix_timestamp()),'SAT'),7);
OK
2016-12-17