festinko

Untitled

Nov 8th, 2022
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 5.88 KB | None | 0 0
  1. WITH
  2.  
  3. /*List of All Mobile App Alert Contacts*/
  4.  MobileAlertContacts AS (
  5.  
  6.         SELECT
  7.             userID,
  8.             alertContactType,
  9.             alertContactFriendlyName,
  10.             alertContactValue,
  11.             alertContactStatus
  12.         FROM `uptimerobot-001.ur.alertcontacts`
  13.         WHERE alertContactType IN (12,13)
  14.         ),
  15.  
  16. /*Number of Unique Mobile App Alert Contacts per user*/
  17.     CountOfUniqueMobileAppAlertContactsPerUser AS(
  18.         SELECT
  19.             userID,
  20.             count(DISTINCT alertContactValue) uniqueMobileAlertContacts
  21.     FROM MobileAlertContacts
  22.     GROUP BY
  23.       userID
  24.     ORDER BY
  25.       uniqueMobileAlertContacts DESC),
  26.  
  27. /*List of Phone Alert Contacts*/
  28.   phoneAlertContacts as(
  29.     SELECT
  30.       userID,
  31.       alertContactID,
  32.       alertContactType,
  33.       alertContactFriendlyName,
  34.       alertContactValue,
  35.       RIGHT (alertContactValue,3) alertContactValueLastChar,
  36.       alertContactStatus
  37.    
  38.     FROM
  39.       `uptimerobot-001.ur.alertcontacts`
  40.  
  41.     WHERE
  42.       alertContactType IN (1,8,14)
  43.  
  44.   ),
  45.  
  46. /*Number of Unique Mobile App Alert Contacts per user*/
  47.  
  48.   CountOfUniquePhoneAlertContactsPerUser as (
  49.   SELECT  
  50.     userID,
  51.     COUNT(DISTINCT alertContactValueLastChar) uniquePhoneAlertContactsCount
  52.   FROM
  53.     phoneAlertContacts
  54.   GROUP BY
  55.     userID
  56.   ),
  57.  
  58. /*List of All Active Not Default E-mail Alert Contacts*/
  59.     NotDefaultEmailAlertContacts AS (
  60.  
  61.         SELECT
  62.             userID,
  63.             alertContactType,
  64.             alertContactFriendlyName,
  65.             alertContactValue,
  66.             alertContactStatus
  67.         FROM `uptimerobot-001.ur.alertcontacts`
  68.         WHERE alertContactType = 2 AND alertContactStatus = 2
  69.         ),
  70.  
  71. /*Number of Active Unique E-mail Alert Contacts per user*/
  72.     CountOfUniqueEmailAlertContactsPerUser AS(
  73.         SELECT
  74.             userID,
  75.             count(DISTINCT alertContactValue) uniqueEmailAlertContacts
  76.     FROM NotDefaultEmailAlertContacts
  77.     GROUP BY userID
  78.     ORDER BY uniqueEmailAlertContacts DESC),
  79.  
  80. /*List of All Active Team Integration Alert Contacts*/
  81.    TeamIntegrationAlertContacts AS (
  82.  
  83.         SELECT
  84.             userID,
  85.             alertContactType,
  86.             alertContactFriendlyName,
  87.             alertContactValue,
  88.             alertContactStatus
  89.         FROM `uptimerobot-001.ur.alertcontacts`
  90.         WHERE alertContactType IN (5,7,11,15,17,18,20) AND alertContactStatus = 2
  91.         ),
  92.    
  93.   /*List users with number of unique team integrations alertContacts*/
  94.     countOfTeamIntegrationAlertContactsByUser AS (
  95.       SELECT
  96.         userID,
  97.         COUNT(DISTINCT alertContactValue) as uniqueTeamIntegrationsCount
  98.       FROM
  99.         TeamIntegrationAlertContacts
  100.      
  101.       GROUP BY
  102.         userID
  103.     ),
  104.  
  105.  
  106. /*List of All Users with Mobile,Phone,Team Integration and Email Alert Contacts Count*/
  107. MobilePhoneTeamItegrationAndEmailAlertContactsCount as (
  108.     SELECT
  109.       u.userID,
  110.       userEmail,
  111.       (CASE
  112.         WHEN uniqueMobileAlertContacts IS NULL THEN 0
  113.         ELSE uniqueMobileAlertContacts
  114.       END) uniqueMobileAlertContactsCount,
  115.      
  116.       (CASE
  117.         WHEN uniquePhoneAlertContactsCount IS NULL THEN 0
  118.         ELSE uniquePhoneAlertContactsCount
  119.       END) uniquePhoneAlertContactsCount,
  120.       (CASE
  121.         WHEN uniqueEmailAlertContacts IS NULL THEN 0
  122.         ELSE uniqueEmailAlertContacts
  123.       END) uniqueEmailAlertContactsCount,
  124.       (CASE
  125.         WHEN uniqueTeamIntegrationsCount IS NULL THEN 0
  126.         ELSE uniqueTeamIntegrationsCount
  127.       END) uniqueTeamIntegrationsForFREECount,
  128.       (CASE
  129.         WHEN userIsProPlan IS NULL THEN 'FREE'
  130.         WHEN userIsProPlan = 0 THEN 'FREE'
  131.         WHEN userIsProPlan = 1 THEN 'PRO'
  132.         ELSE 'WTF'
  133.       END) userIsProPlan
  134.      
  135.  
  136.     FROM
  137.       `uptimerobot-001.ur.users` u
  138.     LEFT JOIN
  139.       CountOfUniqueMobileAppAlertContactsPerUser
  140.     ON CountOfUniqueMobileAppAlertContactsPerUser.userID = u.userID
  141.  
  142.     LEFT JOIN
  143.       CountOfUniquePhoneAlertContactsPerUser
  144.     ON CountOfUniquePhoneAlertContactsPerUser.userID = u.userID
  145.  
  146.     LEFT JOIN
  147.       CountOfUniqueEmailAlertContactsPerUser
  148.     ON CountOfUniqueEmailAlertContactsPerUser.userID = u.userID
  149.  
  150.     LEFT JOIN
  151.       countOfTeamIntegrationAlertContactsByUser
  152.     ON countOfTeamIntegrationAlertContactsByUser.userID = u.userID
  153. ),
  154.  
  155. /*List of All Users with ()>2 Mobile or > 1 Phone or > 1 Team Integration) and 0 additional Email Alert Contacts*/
  156. MultipleMobilePhoneTeamItegrationZeroEmailAlertContacts as (
  157.  
  158. SELECT
  159.     *
  160. FROM
  161.     MobilePhoneTeamItegrationAndEmailAlertContactsCount
  162.  
  163. WHERE
  164.   (uniqueMobileAlertContactsCount > 2 OR uniquePhoneAlertContactsCount >1 OR uniqueTeamIntegrationsForFREECount >1)
  165.   AND uniqueEmailAlertContactsCount = 0
  166.  
  167.  
  168. ORDER BY
  169.   uniquePhoneAlertContactsCount DESC,
  170.   uniqueMobileAlertContactsCount DESC,
  171.   uniqueTeamIntegrationsForFREECount DESC,
  172.   uniqueEmailAlertContactsCount DESC)
  173.  
  174. SELECT
  175.     ac.userID,
  176.     userEmail,
  177.     userIsProPlan,
  178.     alertContactType,
  179.     alertContactFriendlyName,
  180.     STRING_AGG(alertContactFriendlyName,', ' ) OVER (PARTITION BY ac.userID) alertContactFriendlyNameMerged,
  181.     alertContactValue,
  182.     STRING_AGG(alertContactValue,', ' ) OVER (PARTITION BY ac.userID) alertContactValueMerged,
  183.     alertContactStatus,
  184.     uniqueMobileAlertContactsCount,
  185.     uniquePhoneAlertContactsCount,
  186.     uniqueEmailAlertContactsCount,
  187.     uniqueTeamIntegrationsForFREECount
  188.  
  189. FROM
  190.   `uptimerobot-001.ur.alertcontacts` ac
  191.  
  192. LEFT JOIN
  193.   MultipleMobilePhoneTeamItegrationZeroEmailAlertContacts
  194.  
  195. ON ac.userID = MultipleMobilePhoneTeamItegrationZeroEmailAlertContacts.userID
  196.  
  197. WHERE
  198. /*Filter for All Push, Phone, Email, Team Integration Alert Contacts*/
  199. alertContactType IN (1,5,7,8,11,12,13,14,15,17,18,20)
  200. AND MultipleMobilePhoneTeamItegrationZeroEmailAlertContacts.userID IS NOT NULL
  201.  
  202. ORDER BY
  203.   ac.userID
  204.  
  205.  
Add Comment
Please, Sign In to add comment