festinko

Untitled

Nov 9th, 2022
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 5.38 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. /*List of All Push, Phone, Email, Team Integration Alert Contacts*/
  106.     PushPhoneEmailTeamIntegrationAlertContacts as (
  107.       SELECT
  108.         userID,
  109.         alertContactType,
  110.         alertContactFriendlyName,
  111.         alertContactValue,
  112.         alertContactStatus
  113.          
  114.      FROM
  115.       `uptimerobot-001.ur.alertcontacts`
  116.    
  117.     WHERE alertContactType IN (1,2,5,7,8,11,12,13,14,15,17,18,20)
  118.     ),
  119.  
  120. /*List of All Users with Mobile,Phone,Team Integration and Email Alert Contacts Count*/
  121. MobilePhoneTeamItegrationAndEmailAlertContactsCount as (
  122.     SELECT
  123.       u.userID,
  124.       userEmail,
  125.       (CASE
  126.         WHEN uniqueMobileAlertContacts IS NULL THEN 0
  127.         ELSE uniqueMobileAlertContacts
  128.       END) uniqueMobileAlertContacts,
  129.      
  130.       (CASE
  131.         WHEN uniquePhoneAlertContactsCount IS NULL THEN 0
  132.         ELSE uniquePhoneAlertContactsCount
  133.       END) uniquePhoneAlertContactsCount,
  134.       (CASE
  135.         WHEN uniqueEmailAlertContacts IS NULL THEN 0
  136.         ELSE uniqueEmailAlertContacts
  137.       END) uniqueEmailAlertContacts,
  138.       (CASE
  139.         WHEN uniqueTeamIntegrationsCount IS NULL THEN 0
  140.         ELSE uniqueTeamIntegrationsCount
  141.       END) uniqueTeamIntegrationsForFREECount,
  142.       (CASE
  143.         WHEN userIsProPlan IS NULL THEN 'FREE'
  144.         WHEN userIsProPlan = 0 THEN 'FREE'
  145.         WHEN userIsProPlan = 1 THEN 'PRO'
  146.         ELSE 'WTF'
  147.       END) userIsProPlan
  148.      
  149.  
  150.     FROM
  151.       `uptimerobot-001.ur.users` u
  152.     LEFT JOIN
  153.       CountOfUniqueMobileAppAlertContactsPerUser
  154.     ON CountOfUniqueMobileAppAlertContactsPerUser.userID = u.userID
  155.  
  156.     LEFT JOIN
  157.       CountOfUniquePhoneAlertContactsPerUser
  158.     ON CountOfUniquePhoneAlertContactsPerUser.userID = u.userID
  159.  
  160.     LEFT JOIN
  161.       CountOfUniqueEmailAlertContactsPerUser
  162.     ON CountOfUniqueEmailAlertContactsPerUser.userID = u.userID
  163.  
  164.     LEFT JOIN
  165.       countOfTeamIntegrationAlertContactsByUser
  166.     ON countOfTeamIntegrationAlertContactsByUser.userID = u.userID
  167. ),
  168.  
  169. /*List of All Users with ()>2 Mobile or > 1 Phone or > 0 Team Integration) and 0 additional Email Alert Contacts*/
  170. MultipleMobilePhoneTeamItegrationZeroEmailAlertContacts as (
  171.  
  172. SELECT
  173.     *
  174. FROM
  175.     MobilePhoneTeamItegrationAndEmailAlertContactsCount
  176.  
  177. WHERE
  178.   (uniqueMobileAlertContacts > 2 OR uniquePhoneAlertContactsCount >1 OR uniqueTeamIntegrationsForFREECount >0)
  179.   AND uniqueEmailAlertContacts = 0
  180.  
  181.  
  182. ORDER BY
  183.   uniquePhoneAlertContactsCount DESC,
  184.   uniqueMobileAlertContacts DESC,
  185.   uniqueTeamIntegrationsForFREECount DESC,
  186.   uniqueEmailAlertContacts DESC)
  187.  
  188. SELECT
  189.   *
  190. FROM
  191.   MultipleMobilePhoneTeamItegrationZeroEmailAlertContacts
Add Comment
Please, Sign In to add comment