festinko

Untitled

Nov 7th, 2022
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 3.36 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.  
  78. preFinalData as (
  79.     SELECT
  80.       u.userID,
  81.       userEmail,
  82.       (CASE
  83.         WHEN uniqueMobileAlertContacts IS NULL THEN 0
  84.         ELSE uniqueEmailAlertContacts
  85.       END) uniqueMobileAlertContacts,
  86.      
  87.       (CASE
  88.         WHEN uniquePhoneAlertContactsCount IS NULL THEN 0
  89.         ELSE uniquePhoneAlertContactsCount
  90.       END) uniquePhoneAlertContactsCount,
  91.       (CASE
  92.         WHEN uniqueEmailAlertContacts IS NULL THEN 0
  93.         ELSE uniqueEmailAlertContacts
  94.       END) uniqueEmailAlertContacts,
  95.       (CASE
  96.         WHEN userIsProPlan IS NULL THEN 'FREE'
  97.         WHEN userIsProPlan = 0 THEN 'FREE'
  98.         WHEN userIsProPlan = 1 THEN 'PRO'
  99.         ELSE 'WTF'
  100.       END) userIsProPlan
  101.      
  102.      
  103.  
  104.     FROM
  105.       `uptimerobot-001.ur.users` u
  106.     LEFT JOIN
  107.       CountOfUniqueMobileAppAlertContactsPerUser
  108.     ON CountOfUniqueMobileAppAlertContactsPerUser.userID = u.userID
  109.  
  110.     LEFT JOIN
  111.       CountOfUniquePhoneAlertContactsPerUser
  112.     ON CountOfUniquePhoneAlertContactsPerUser.userID = u.userID
  113.  
  114.     LEFT JOIN
  115.       CountOfUniqueEmailAlertContactsPerUser
  116.     ON CountOfUniqueEmailAlertContactsPerUser.userID = u.userID)
  117.  
  118. SELECT
  119.     *
  120. FROM
  121.     preFinalData
  122.  
  123. WHERE
  124.   (uniqueMobileAlertContacts > 2 OR uniquePhoneAlertContactsCount >2)
  125.   AND uniqueEmailAlertContacts = 0
  126.  
  127.  
  128. ORDER BY
  129.   uniqueMobileAlertContacts DESC,
  130.   uniquePhoneAlertContactsCount DESC,
  131.   uniqueEmailAlertContacts DESC
  132.  
  133.  
  134.  
Add Comment
Please, Sign In to add comment