postgreSQL - сумма часов по уникальному идентификатору и многое другое - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь выяснить, как суммировать время по уникальному идентификатору (имеется в виду только один на каждый идентификатор). Вот разметка некоторых данных. Мне нужно GROUP BY f_name, l_name и области. Мне также нужно количество групп (уникальное количество идентификаторов) и участников группы (просто простое количество идентификаторов).

+----+------+-------+-------+------+--+
| ID | Time | fname | lname | Area |  |
+----+------+-------+-------+------+--+
|  1 | 3:30 | Jeff  | Chose | LA   |  |
|  1 | 3:30 | Jeff  | Chose | LA   |  |
|  1 | 3:30 | Jeff  | Chose | LA   |  |
|  2 | 4:00 | Jeff  | Chose | LA   |  |
+----+------+-------+-------+------+--+

Данные должны выглядеть следующим образом:

+------+-------+-------+------+-------------+--------------------+
| Time | fname | lnam  | Area | Group Count | Group Participants |
+------+-------+-------+------+-------------+--------------------+
| 7:30 | Jeff  | Chose | LA   |           2 |                  4 |
|      |       |       |      |             |                    |
+------+-------+-------+------+-------------+--------------------+

БОНУС: Если вы можете конвертировать 3:30 до 3,5

1 Ответ

0 голосов
/ 04 сентября 2018

SQL DEMO

WITH cte as (
    SELECT fname, lname, Area,
           COUNT(DISTINCT id) as "Group Count",
           COUNT(id) as "Group Participants", 
           SUM(DISTINCT "time"::time) as "Time"
    FROM Table1
    GROUP BY fname, lname, Area, id 
)    
SELECT fname, lname, Area,
       SUM("Group Count") as "Group Count",
       SUM("Group Participants") as "Group Participants", 
       SUM("Time"::time) as "Time"
FROM cte
GROUP BY fname, lname, Area;

OUTPUT

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...