festinko

Untitled

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