festinko

Untitled

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