基于日期列的月级聚合

时间:2018-05-30 05:07:03

标签: sql hiveql

我的第一个非聚合表格如下,前3列。

我需要创建一个包含另一列的表格,其中包含针对相应部门汇总的每月收入,如红色突出显示的列所示:



<!DOCTYPE html>
<html>
<head>
<style>
table, th, td {
    border: 1px solid black;
    border-collapse: collapse;
}
th, td {
    padding: 15px;
}
</style>
</head>
<body>

<table>
  <tr>
    <th>Date</th>
    <th>Department</th> 
    <th>Daily Earnings</th>
    <th bgcolor="#ff6633">Dept Monthly Earnings</th>
  </tr>
  <tr>
    <td>02-26-2018</td>
    <td>1</td>
    <td>10</td>
    <td bgcolor="#ff6633">60</td>
  </tr>
  <tr>
    <td>02-27-2018</td>
    <td>2</td>
    <td>40</td>
    <td bgcolor="#ff6633">140</td>
  </tr>
  <tr>
   <td>02-28-2018</td>
    <td>1</td>
    <td>50</td>
    <td bgcolor="#ff6633">60</td>
  </tr>
  <tr>
   <td>02-28-2018</td>
    <td>2</td>
    <td>100</td>
    <td bgcolor="#ff6633">140</td>
  </tr>
  <tr>
   <td>03-01-2018</td>
    <td>1</td>
    <td>150</td>
    <td bgcolor="#ff6633">200</td>
  </tr>
  <tr>
   <td>03-02-2018</td>
    <td>1</td>
    <td>50</td>
    <td bgcolor="#ff6633">200</td>
  </tr>
  <tr>
   <td>03-02-2018</td>
    <td>2</td>
    <td>100</td>
    <td bgcolor="#ff6633">100</td>
  </tr>
  
</table>

</body>
</html>
&#13;
&#13;
&#13;

如何在Hive / SQL中以上述格式创建表? 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您可以使用窗口功能:

select t.*,
       sum(daily_earnings) over (partition by department, trunc(date, 'MON')) as dept_monthly_earnings
from t;