Агрегация на уровне месяца по столбцу даты - PullRequest
0 голосов
/ 30 мая 2018

Моя первая неагрегированная таблица, как показано ниже, с первыми 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>

Как создать таблицу в указанном выше формате в Hive / SQL?Ценю вашу помощь

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете использовать оконные функции:

select t.*,
       sum(daily_earnings) over (partition by department, trunc(date, 'MON')) as dept_monthly_earnings
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...