tricky GROUP

From
Ivan Shmakov (2:5002/75.3)
To
All (2:5054/37.63)
Date
2005-03-27T16:35:40Z
Area
SU.DBMS.SQL
From: Ivan Shmakov <Ivan.Shmakov@p3.f75.n5002.z2.fidonet.org>

	Есть таблица (учет использования некоего сервиса), похожая на:

CREATE TABLE "foo" (
    "id"      SERIAL PRIMARY KEY,
    "start"   timestamptz NOT NULL,
    "finish"  timestamptz NOT NULL);

	Требуется просуммировать интервалы "finish" - "start",
	сгруппировав их по датам.

	Не получается реализовать обработку случая, когда "start" и
	"stop" относятся к разным датам.

	Eg. для:

id  start                stop
 1  2005-01-01 23:50+06  2005-01-02 00:10+06
 2  2005-01-02 10:00+06  2005-01-02 10:10+06

	нужно получить:

    start       duration
    2005-01-01  00:10
    2005-01-02  00:20

	Если имеет значение -- используется PostgreSQL 7.4.5.
--- ifmail v.2.15
 * Origin: Microsoft-free station (2:5002/75.3@fidonet)
SEEN-BY: 46/50 50/203 292/100 450/186 208 1024 451/30 452/25 100 454/9 460/15
SEEN-BY: 461/33 74 106 640 462/30 463/92 464/34 465/70 92 213 467/24 469/125
SEEN-BY: 478/44 550/5068 4614/9 20 4625/9 4626/100 4635/1024 4641/444 4642/27
SEEN-BY: 4642/48 4643/10 4653/10 4657/50 5000/5000 5001/50 5001 5002/28 44 48
SEEN-BY: 5002/50 60 61 63 74 75 76 83 88 5002 5003/34 5004/84 5009/14 5010/53
SEEN-BY: 5010/146 5011/13 5012/23 5015/4 10 28 5019/5 31 5020/52 86 104 115
SEEN-BY: 5020/128 133 150 175 201 400 545 639 642 715 755 758 794 894 921 968
SEEN-BY: 5020/982 1042 1100 1169 1212 1234 1523 1604 1626 1642 1826 1873 1930
SEEN-BY: 5020/1992 2020 2140 2200 2238 4400 4441 8383 5021/11 29 5022/5
SEEN-BY: 5023/11 5024/1 5025/3 19 750 5026/10 45 78 5027/16 5029/32 5030/69
SEEN-BY: 5030/115 195 382 436 473 556 611 920 966 1016 1063 1212 1339 1900
SEEN-BY: 5031/47 63 5032/16 5033/5 21 35 5034/8 5035/10 38 5036/13 34 5037/21
SEEN-BY: 5037/36 5040/33 47 5041/4 5042/13 21 5045/7 5047/43 47 5049/157
SEEN-BY: 5050/9 41 5051/35 5053/16 5054/1 8 9 28 35 37 45 50 63 67 5055/95 177
SEEN-BY: 5056/16 5058/77 5059/20 37 5062/1 10 5063/5 41 51 5064/7 35 36 5069/7
SEEN-BY: 5070/26 66 1222 5071/22 5074/3 5077/70 5079/23 49 5080/68 1003 5082/6
SEEN-BY: 5083/13 21 5084/32 5085/13 5090/23 105 106 5092/1 5093/4 27 29
SEEN-BY: 5095/20 5099/4 133 5100/113 6000/12 254 6001/3 6003/7 6023/1
SEEN-BY: 6033/2727 6045/7
PATH: 5002/75 50 5002 5020/52 4441 545 5054/1 37