Last active
August 29, 2015 14:14
-
-
Save lorinc/a963242456159847ec15 to your computer and use it in GitHub Desktop.
simple data aggregation problem - SQL solution
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
problem: return the sum of call durations for those operators | |
who initiated at least one call per day for a given | |
timeslot. data: calls(mtid, date, duration) | |
*/ | |
SELECT sum(duration) | |
FROM calls | |
JOIN | |
(SELECT MTID, count(MTID) | |
FROM | |
(SELECT MTID, date -- returns 1 record for each unique MTID-date pairs | |
FROM calls | |
WHERE date BETWEEN '2014-01-04' AND '2014-01-11' -- criteria period | |
GROUP BY MTID, date) datepicker | |
GROUP BY MTID | |
HAVING count(MTID) = 7) selectedMTIDs -- have exactly this amount of days with a call | |
ON (calls.MTID = selectedMTIDs.MTID) | |
WHERE date BETWEEN '2014-01-04' AND '2014-01-11' -- sum period | |
/* | |
creating table | |
*/ | |
create table CALLS ( | |
id INT UNIQUE PRIMARY KEY, | |
MTID INT, | |
date DATE, | |
duration DECIMAL(3,1) | |
); | |
/* | |
populating test data | |
*/ | |
insert into CALLS (id, MTID, date, duration) values (1, 1, '2014-01-02', 13.2); | |
insert into CALLS (id, MTID, date, duration) values (2, 2, '2014-01-09', 12.1); | |
insert into CALLS (id, MTID, date, duration) values (3, 2, '2014-01-16', 9.9); | |
insert into CALLS (id, MTID, date, duration) values (4, 2, '2014-01-12', 10); | |
insert into CALLS (id, MTID, date, duration) values (5, 2, '2014-01-17', 1.5); | |
insert into CALLS (id, MTID, date, duration) values (6, 3, '2014-01-14', 12.9); | |
insert into CALLS (id, MTID, date, duration) values (7, 2, '2014-01-05', 13.6); | |
insert into CALLS (id, MTID, date, duration) values (8, 1, '2014-01-10', 5.9); | |
insert into CALLS (id, MTID, date, duration) values (9, 3, '2014-01-14', 2.8); | |
insert into CALLS (id, MTID, date, duration) values (10, 1, '2014-01-07', 5.5); | |
insert into CALLS (id, MTID, date, duration) values (11, 2, '2014-01-16', 6.2); | |
insert into CALLS (id, MTID, date, duration) values (12, 3, '2014-01-14', 10.5); | |
insert into CALLS (id, MTID, date, duration) values (13, 2, '2014-01-03', 1.8); | |
insert into CALLS (id, MTID, date, duration) values (14, 1, '2014-01-15', 12.6); | |
insert into CALLS (id, MTID, date, duration) values (15, 3, '2014-01-10', 13.7); | |
insert into CALLS (id, MTID, date, duration) values (16, 3, '2014-01-06', 4.1); | |
insert into CALLS (id, MTID, date, duration) values (17, 3, '2014-01-13', 14.2); | |
insert into CALLS (id, MTID, date, duration) values (18, 2, '2014-01-05', 2.2); | |
insert into CALLS (id, MTID, date, duration) values (19, 1, '2014-01-07', 7.9); | |
insert into CALLS (id, MTID, date, duration) values (20, 1, '2014-01-02', 4.6); | |
insert into CALLS (id, MTID, date, duration) values (21, 2, '2014-01-08', 13.1); | |
insert into CALLS (id, MTID, date, duration) values (22, 2, '2014-01-08', 9.4); | |
insert into CALLS (id, MTID, date, duration) values (23, 1, '2014-01-08', 6.5); | |
insert into CALLS (id, MTID, date, duration) values (24, 1, '2014-01-12', 10.4); | |
insert into CALLS (id, MTID, date, duration) values (25, 1, '2014-01-05', 8.9); | |
insert into CALLS (id, MTID, date, duration) values (26, 1, '2014-01-08', 10.1); | |
insert into CALLS (id, MTID, date, duration) values (27, 3, '2014-01-12', 12.4); | |
insert into CALLS (id, MTID, date, duration) values (28, 2, '2014-01-05', 8.6); | |
insert into CALLS (id, MTID, date, duration) values (29, 2, '2014-01-06', 7); | |
insert into CALLS (id, MTID, date, duration) values (30, 2, '2014-01-11', 6); | |
insert into CALLS (id, MTID, date, duration) values (31, 2, '2014-01-14', 9.8); | |
insert into CALLS (id, MTID, date, duration) values (32, 1, '2014-01-04', 4.9); | |
insert into CALLS (id, MTID, date, duration) values (33, 2, '2014-01-03', 14.2); | |
insert into CALLS (id, MTID, date, duration) values (34, 3, '2014-01-01', 14.7); | |
insert into CALLS (id, MTID, date, duration) values (35, 1, '2014-01-07', 13.9); | |
insert into CALLS (id, MTID, date, duration) values (36, 2, '2014-01-06', 13.4); | |
insert into CALLS (id, MTID, date, duration) values (37, 1, '2014-01-02', 8.4); | |
insert into CALLS (id, MTID, date, duration) values (38, 3, '2014-01-14', 8.1); | |
insert into CALLS (id, MTID, date, duration) values (39, 3, '2014-01-15', 1.5); | |
insert into CALLS (id, MTID, date, duration) values (40, 2, '2014-01-03', 14.9); | |
insert into CALLS (id, MTID, date, duration) values (41, 1, '2014-01-13', 1.3); | |
insert into CALLS (id, MTID, date, duration) values (42, 1, '2014-01-10', 3.7); | |
insert into CALLS (id, MTID, date, duration) values (43, 2, '2014-01-15', 5.6); | |
insert into CALLS (id, MTID, date, duration) values (44, 1, '2014-01-10', 1.6); | |
insert into CALLS (id, MTID, date, duration) values (45, 3, '2014-01-17', 6.5); | |
insert into CALLS (id, MTID, date, duration) values (46, 2, '2014-01-04', 14.1); | |
insert into CALLS (id, MTID, date, duration) values (47, 3, '2014-01-16', 5.4); | |
insert into CALLS (id, MTID, date, duration) values (48, 2, '2014-01-12', 14.7); | |
insert into CALLS (id, MTID, date, duration) values (49, 3, '2014-01-13', 13.3); | |
insert into CALLS (id, MTID, date, duration) values (50, 1, '2014-01-05', 10.4); | |
insert into CALLS (id, MTID, date, duration) values (51, 3, '2014-01-10', 13.5); | |
insert into CALLS (id, MTID, date, duration) values (52, 2, '2014-01-08', 5.6); | |
insert into CALLS (id, MTID, date, duration) values (53, 2, '2014-01-07', 7.5); | |
insert into CALLS (id, MTID, date, duration) values (54, 3, '2014-01-16', 1.5); | |
insert into CALLS (id, MTID, date, duration) values (55, 2, '2014-01-07', 1.3); | |
insert into CALLS (id, MTID, date, duration) values (56, 1, '2014-01-08', 10.6); | |
insert into CALLS (id, MTID, date, duration) values (57, 2, '2014-01-02', 2.9); | |
insert into CALLS (id, MTID, date, duration) values (58, 2, '2014-01-02', 5.4); | |
insert into CALLS (id, MTID, date, duration) values (59, 2, '2014-01-08', 14.4); | |
insert into CALLS (id, MTID, date, duration) values (60, 1, '2014-01-02', 7.7); | |
insert into CALLS (id, MTID, date, duration) values (61, 2, '2014-01-17', 1.6); | |
insert into CALLS (id, MTID, date, duration) values (62, 2, '2014-01-04', 5.4); | |
insert into CALLS (id, MTID, date, duration) values (63, 1, '2014-01-17', 5.2); | |
insert into CALLS (id, MTID, date, duration) values (64, 2, '2014-01-17', 3.7); | |
insert into CALLS (id, MTID, date, duration) values (65, 1, '2014-01-02', 7.3); | |
insert into CALLS (id, MTID, date, duration) values (66, 3, '2014-01-04', 3.2); | |
insert into CALLS (id, MTID, date, duration) values (67, 2, '2014-01-02', 14.8); | |
insert into CALLS (id, MTID, date, duration) values (68, 3, '2014-01-07', 9.2); | |
insert into CALLS (id, MTID, date, duration) values (69, 3, '2014-01-10', 1.6); | |
insert into CALLS (id, MTID, date, duration) values (70, 1, '2014-01-17', 9.7); | |
insert into CALLS (id, MTID, date, duration) values (71, 2, '2014-01-07', 6.2); | |
insert into CALLS (id, MTID, date, duration) values (72, 2, '2014-01-15', 14.8); | |
insert into CALLS (id, MTID, date, duration) values (73, 1, '2014-01-06', 10.7); | |
insert into CALLS (id, MTID, date, duration) values (74, 1, '2014-01-13', 8.4); | |
insert into CALLS (id, MTID, date, duration) values (75, 1, '2014-01-04', 6.2); | |
insert into CALLS (id, MTID, date, duration) values (76, 1, '2014-01-10', 13.5); | |
insert into CALLS (id, MTID, date, duration) values (77, 2, '2014-01-17', 14.7); | |
insert into CALLS (id, MTID, date, duration) values (78, 1, '2014-01-15', 7.7); | |
insert into CALLS (id, MTID, date, duration) values (79, 3, '2014-01-13', 2.7); | |
insert into CALLS (id, MTID, date, duration) values (80, 3, '2014-01-15', 14.9); | |
insert into CALLS (id, MTID, date, duration) values (81, 2, '2014-01-02', 3.3); | |
insert into CALLS (id, MTID, date, duration) values (82, 1, '2014-01-10', 9.1); | |
insert into CALLS (id, MTID, date, duration) values (83, 3, '2014-01-01', 7.2); | |
insert into CALLS (id, MTID, date, duration) values (84, 1, '2014-01-03', 3.9); | |
insert into CALLS (id, MTID, date, duration) values (85, 1, '2014-01-01', 8.8); | |
insert into CALLS (id, MTID, date, duration) values (86, 3, '2014-01-10', 7.9); | |
insert into CALLS (id, MTID, date, duration) values (87, 3, '2014-01-15', 10); | |
insert into CALLS (id, MTID, date, duration) values (88, 1, '2014-01-14', 7.6); | |
insert into CALLS (id, MTID, date, duration) values (89, 3, '2014-01-01', 4.8); | |
insert into CALLS (id, MTID, date, duration) values (90, 2, '2014-01-16', 1.8); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment