Advertisement
mess9

Untitled

Oct 22nd, 2020
794
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.68 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 FROM (SELECT DISTINCT b.LOCALSYSTEMID FROM DWH6.BILLS b WHERE b.CLIENT_APP_PKID = c.APP_PKID AND b.CLIENT_VERSION = 0 AND b.CLIENT_LOCALSYSTEMID = c.LOCALSYSTEMID)
  22.         ) AS num_bills,      -- всего уникальных счетов на клиенте
  23.         (
  24.         SELECT COUNT(BILLINGDATE) AS num_uniq_date FROM (SELECT DISTINCT
  25.         TO_CHAR (b.BILLINGDATE, 'DD.MM.YY') || 'T' || TO_CHAR(b.BILLINGDATE, 'HH24:MI:SS') AS BILLINGDATE -- формат исключающий милисекунды
  26.         FROM DWH6.BILLS b WHERE b.CLIENT_APP_PKID = c.APP_PKID AND b.CLIENT_VERSION = 0 AND b.CLIENT_LOCALSYSTEMID = c.LOCALSYSTEMID)
  27.         ) AS uniq_bill_date, -- всего уникальных дат счетов на клиенте
  28.         (
  29.         SELECT COUNT(SERVICEPROVIDER_LOCALSYSTEMID) AS num_uniq_serv_prov
  30.         FROM (SELECT DISTINCT b.SERVICEPROVIDER_LOCALSYSTEMID FROM DWH6.BILLS b WHERE b.CLIENT_APP_PKID = c.APP_PKID AND b.CLIENT_VERSION = 0 AND b.CLIENT_LOCALSYSTEMID = c.LOCALSYSTEMID)
  31.         ) AS uniq_serv_prov  -- всего уникальных сервис провайдеров счетов на клиенте
  32.     FROM
  33.         mdm6.CLIENT sample(1) c -- sample speed magic (для теста(0.5) и (пре)прода(0.0005) нужны разные значения)
  34.         INNER JOIN DWH6.BILLS b     -- подбирать значения sample нужно эмпирически. дабы и данные нашлись, и время запроса было адекватным
  35.             ON c.LOCALSYSTEMID = b.CLIENT_LOCALSYSTEMID
  36.             AND c.APP_PKID = b.CLIENT_APP_PKID
  37.             AND c.VERSION = b.CLIENT_VERSION
  38.     WHERE 1=1
  39.         AND c.VERSION = 0
  40.         AND c.DELETED = 0
  41.         AND c.ENDDATE > SYSDATE
  42.         AND REGEXP_LIKE(c.nls, '\d{12}')
  43.         AND c.app_pkid = 9
  44.     ORDER BY NUM_BILLS DESC
  45.     )
  46. WHERE 1=1
  47.     AND uniq_bill_date > 2
  48.     AND num_bills > 3
  49.     AND uniq_serv_prov > 2
  50. --  AND rownum = 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement