在sql / hiveql的列中按值集分组

时间:2018-08-09 01:39:03

标签: hiveql

我有一个表,其中包含旅行次数和星期几(星期一,星期二,星期三.....)。我想按“周末”和“工作日”汇总旅行次数。有什么方法可以将周日和周六分组为周末,将其余部分归为工作日?

2 个答案:

答案 0 :(得分:2)

您可以使用CASE ... END将星期六和星期日映射到另一个值,例如周末,否则使用工作日。

...
GROUP BY CASE
           WHEN weekday IN ('Saturday',
                            'Sunday') THEN
             'Weekend'
           ELSE
             weekday
         END

({weekday是存储工作日的列。)

编辑:

或者,如果您希望将星期一至星期五作为工作日,而不要使用他们的个人名字(我不知道怎么看待您的帖子。):

...
GROUP BY CASE
           WHEN weekday IN ('Saturday',
                            'Sunday') THEN
             'Weekend'
           ELSE
             'Weekday'
         END

答案 1 :(得分:1)

或者,从@stickybit的答案扩展,如果有可用的日期列,则可以使用TO_CHAR获取星期几:

   .
   .
   .
GROUP BY CASE 
           WHEN TRIM(TO_CHAR(YOUR_DATE_FIELD, 'DAY')) IN ('SATURDAY', 'SUNDAY') THEN
             'WEEKEND'
           ELSE
             'WEEKDAY'
         END;

SQLFiddle here