Created
December 6, 2012 07:17
-
-
Save bxm156/4222434 to your computer and use it in GitHub Desktop.
Market Basket One Gigantic Query for ServicePad
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
SELECT event_id as recommended_event_id FROM ( | |
(SELECT event1 AS event_id FROM (SELECT tempP.event1 FROM ( | |
SELECT r1.event AS event1, r2.event AS event2 | |
FROM (SELECT user_id AS user, event_id AS event | |
FROM service_serviceenrollment WHERE event_id IN ( | |
SELECT event_id FROM service_serviceenrollment GROUP BY event_id HAVING COUNT(*) >= threshold | |
)) AS r1, (SELECT user_id AS user, event_id AS event | |
FROM service_serviceenrollment WHERE event_id IN ( | |
SELECT event_id FROM service_serviceenrollment GROUP BY event_id HAVING COUNT(*) >= threshold | |
)) AS r2 | |
WHERE r1.user = r2.user | |
AND r1.event < r2.event | |
GROUP BY r1.event, r2.event | |
HAVING COUNT(*) >= threshold) AS tempP | |
JOIN service_serviceenrollment ON (service_serviceenrollment.event_id = tempP.event1 OR service_serviceenrollment.event_id = tempP.event2 ) | |
WHERE service_serviceenrollment.user_id = a_user_id) AS list1 WHERE | |
event1 NOT IN ( | |
SELECT event_id FROM service_serviceenrollment WHERE user_id = a_user_id | |
)) | |
union | |
(SELECT event2 AS event_id FROM (SELECT tempP.event2 FROM ( | |
SELECT r1.event AS event1, r2.event AS event2 | |
FROM (SELECT user_id AS user, event_id AS event | |
FROM service_serviceenrollment WHERE event_id IN ( | |
SELECT event_id FROM service_serviceenrollment GROUP BY event_id HAVING COUNT(*) >= threshold | |
)) AS r1, (SELECT user_id AS user, event_id AS event | |
FROM service_serviceenrollment WHERE event_id IN ( | |
SELECT event_id FROM service_serviceenrollment GROUP BY event_id HAVING COUNT(*) >= threshold | |
)) AS r2 | |
WHERE r1.user = r2.user | |
AND r1.event < r2.event | |
GROUP BY r1.event, r2.event | |
HAVING COUNT(*) >= threshold) AS tempP | |
JOIN service_serviceenrollment ON (service_serviceenrollment.event_id = tempP.event1 OR service_serviceenrollment.event_id = tempP.event2 ) | |
WHERE service_serviceenrollment.user_id = a_user_id) AS list2 WHERE | |
event2 NOT IN ( | |
SELECT event_id FROM service_serviceenrollment WHERE user_id = a_user_id | |
)) | |
) AS final; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment