Advertisement
mess9

Untitled

Oct 22nd, 2020
790
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.94 KB | None | 0 0
  1. -- набор данных в метод /client/bills
  2. -- нужно получить такой nls у которого будет
  3. -- начислений > 3
  4. -- начислений с уникальными датами > 2
  5. -- начислений с уникальными сервис провайдерами > 2
  6. SELECT
  7.     nls,
  8.     LOCALSYSTEMID,
  9.     APP_PKID,
  10.     version
  11.     num_bills,
  12.     uniq_bill_date,
  13.     uniq_serv_prov
  14. FROM (
  15.     SELECT DISTINCT ---- получаем некоторое количество клиентов у которых num_bills начислений
  16.         c.nls,  
  17.         c.LOCALSYSTEMID AS LOCALSYSTEMID ,
  18.         c.app_pkid,
  19.         c.version,
  20.         (
  21.         SELECT COUNT(LOCALSYSTEMID) AS uniq_bills
  22.         FROM (SELECT DISTINCT b.LOCALSYSTEMID FROM DWH6.BILLS b
  23.         WHERE b.CLIENT_APP_PKID = c.APP_PKID AND b.CLIENT_VERSION = 0 AND b.CLIENT_LOCALSYSTEMID = c.LOCALSYSTEMID)
  24.         ) AS num_bills,      -- всего уникальных счетов на клиенте
  25.         (
  26.         SELECT COUNT(BILLINGDATE) AS num_uniq_date
  27.         FROM (SELECT DISTINCT
  28.         TO_CHAR (b.BILLINGDATE, 'YYYY-MM-DD') || 'T' || TO_CHAR(b.BILLINGDATE, 'HH24:MI:SS') AS BILLINGDATE
  29.         FROM DWH6.BILLS b WHERE b.CLIENT_APP_PKID = c.APP_PKID AND b.CLIENT_VERSION = 0 AND b.CLIENT_LOCALSYSTEMID = c.LOCALSYSTEMID)
  30.         ) AS uniq_bill_date, -- всего уникальных дат счетов на клиенте
  31.         (
  32.         SELECT COUNT(SERVICEPROVIDER_LOCALSYSTEMID) AS num_uniq_serv_prov
  33.         FROM (SELECT DISTINCT b.SERVICEPROVIDER_LOCALSYSTEMID FROM DWH6.BILLS b
  34.         WHERE b.CLIENT_APP_PKID = c.APP_PKID AND b.CLIENT_VERSION = 0 AND b.CLIENT_LOCALSYSTEMID = c.LOCALSYSTEMID)
  35.         ) AS uniq_serv_prov  -- всего уникальных сервис провайдеров счетов на клиенте
  36.     FROM
  37.         mdm6.CLIENT sample(0.001) c -- sample speed magic (для теста(0.5) и (пре)прода(0.0005) нужны разные значения)
  38.         INNER JOIN DWH6.BILLS b     -- подбирать значения sample нужно эмпирически. дабы и данные нашлись, и время запроса было адекватным
  39.             ON c.LOCALSYSTEMID = b.CLIENT_LOCALSYSTEMID
  40.             AND c.APP_PKID = b.CLIENT_APP_PKID
  41.             AND c.VERSION = b.CLIENT_VERSION
  42.     WHERE 1=1
  43.         AND c.VERSION = 0
  44.         AND c.DELETED = 0
  45.         AND c.ENDDATE > SYSDATE
  46.         AND REGEXP_LIKE(c.nls, '\d{12}')
  47.         AND c.app_pkid = 9
  48.     ORDER BY NUM_BILLS DESC
  49.     )
  50. WHERE 1=1
  51.     AND uniq_bill_date > 2
  52.     AND num_bills > 3
  53.     AND uniq_serv_prov > 2
  54. --  AND rownum = 1
  55.    
  56.    
  57. -- отдельно код который считает num_bills
  58. SELECT COUNT(LOCALSYSTEMID) FROM
  59. (
  60. SELECT DISTINCT b.LOCALSYSTEMID FROM DWH6.BILLS b
  61. WHERE 1=1
  62. AND b.CLIENT_APP_PKID = 9
  63. AND b.CLIENT_VERSION = 0
  64. AND b.CLIENT_LOCALSYSTEMID = '10782961954'
  65. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement