festinko

Untitled

Nov 18th, 2022
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 7.12 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 >0)
  165.   AND uniqueEmailAlertContactsCount = 0
  166.  
  167.  
  168. ORDER BY
  169.   uniquePhoneAlertContactsCount DESC,
  170.   uniqueMobileAlertContactsCount DESC,
  171.   uniqueTeamIntegrationsForFREECount DESC,
  172.   uniqueEmailAlertContactsCount DESC),
  173.  
  174. preFinalData as (
  175.   SELECT
  176.     ac.userID,
  177.     userEmail,
  178.     userIsProPlan,
  179.     alertContactType,
  180.     alertContactFriendlyName,
  181.     CONCAT('<li><a style="color: #3BD771; text-underline: none;"><strong>',STRING_AGG(alertContactFriendlyName,'</a></li><li><a style="color: #3BD771; text-underline: none;"><strong>' ) OVER (PARTITION BY ac.userID),'</strong></a></li>') alertContactValueMergedStringListHTML,
  182.     STRING_AGG(alertContactFriendlyName,', ' ) OVER (PARTITION BY ac.userID) alertContactFriendlyNameMergedString,
  183.     to_json_string(CONCAT('[',STRING_AGG(alertContactFriendlyName,', ' ) OVER (PARTITION BY ac.userID),']')) alertContactFriendlyNameMergedJSON,
  184.     alertContactValue,
  185.     STRING_AGG(alertContactValue,', ' ) OVER (PARTITION BY ac.userID) alertContactValueMergedString,
  186.     to_json_string(CONCAT('[',STRING_AGG(alertContactValue,', ' ) OVER (PARTITION BY ac.userID),']')) alertContactValueMergedJSON,
  187.     alertContactStatus,
  188.     uniqueMobileAlertContactsCount,
  189.     uniquePhoneAlertContactsCount,
  190.     uniqueEmailAlertContactsCount,
  191.     uniqueTeamIntegrationsForFREECount
  192.  
  193. FROM
  194.   `uptimerobot-001.ur.alertcontacts` ac
  195.  
  196. LEFT JOIN
  197.   MultipleMobilePhoneTeamItegrationZeroEmailAlertContacts
  198.  
  199. ON ac.userID = MultipleMobilePhoneTeamItegrationZeroEmailAlertContacts.userID
  200.  
  201. WHERE
  202. /*Filter for All Push, Phone, Email, Team Integration Alert Contacts*/
  203. alertContactType IN (1,5,7,8,11,12,13,14,15,17,18,20)
  204. AND MultipleMobilePhoneTeamItegrationZeroEmailAlertContacts.userID IS NOT NULL
  205.  
  206. ORDER BY
  207.   ac.userID)
  208.  
  209. SELECT
  210.   userID,
  211.   userEmail,
  212.   userIsProPlan,
  213.   alertContactValueMergedStringListHTML,
  214.   alertContactFriendlyNameMergedString,
  215.   alertContactValueMergedString,
  216.   MAX(uniqueMobileAlertContactsCount) uniqueMobileAlertContactsCount,
  217.   MAX(uniquePhoneAlertContactsCount) uniquePhoneAlertContactsCount,
  218.   MAX(uniqueEmailAlertContactsCount) uniqueEmailAlertContactsCount,
  219.   MAX(uniqueTeamIntegrationsForFREECount) uniqueTeamIntegrationsForFREECount
  220.  
  221. FROM
  222. preFinalData
  223.  
  224. WHERE
  225.   userIsProPlan = 'PRO'
  226.  
  227. GROUP BY
  228.   userID,
  229.   userEmail,
  230.   userIsProPlan,
  231.   alertContactValueMergedStringListHTML,
  232.   alertContactFriendlyNameMergedString,
  233.   alertContactValueMergedString
  234.  
Add Comment
Please, Sign In to add comment