Advertisement
GuestRT

Apr-2-1

Apr 16th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.05 KB | None | 0 0
  1. CREATE TABLE sandbox.yurbasov_apr_v2_1
  2. -- Вычислить ID района для списка человек. (ответ вида: Вешняки)
  3. AS
  4. WITH tsk AS (
  5.   SELECT CAST(phone AS BIGINT) AS k, hash AS h FROM sandbox.yurbasov_lexqueryh
  6. ), rich1 AS (
  7.   SELECT t.k AS UID, '(null)' AS DISTRICT_ID,
  8.   m.start_distrcit_name AS DISTRICT_NAME, m.sourcename AS TYPE,
  9.   1 AS MAIN_START, 0 AS MAIN_END, 0 AS MAIN_INTERIM,
  10.   1 AS SECONDARY_START, 0 AS SECONDARY_END, 0 AS SECONDARY_INTERIM FROM tsk t LEFT JOIN sandbox.mgtpart1 m ON m.hash = t.h
  11. ), res1 AS (
  12.   SELECT UID, DISTRICT_ID, DISTRICT_NAME, TYPE, SUM(MAIN_START) AS MAIN_START, 0 AS MAIN_END, 0 AS MAIN_INTERIM,
  13.   SUM(SECONDARY_START) AS SECONDARY_START, 0 AS SECONDARY_END, 0 AS SECONDARY_INTERIM FROM rich1 GROUP BY UID, DISTRICT_ID, DISTRICT_NAME, TYPE
  14. ), rich2 AS (
  15.   SELECT t.k AS UID, '(null)' AS DISTRICT_ID,
  16.   m.end_distrcit_name AS DISTRICT_NAME, m.sourcename AS TYPE,
  17.   0 AS MAIN_START, 1 AS MAIN_END, 0 AS MAIN_INTERIM,
  18.   0 AS SECONDARY_START, 1 AS SECONDARY_END, 0 AS SECONDARY_INTERIM FROM tsk t LEFT JOIN sandbox.mgtpart1 m ON m.hash = t.h
  19. ), res2 AS (
  20.   SELECT UID, DISTRICT_ID, DISTRICT_NAME, TYPE, 0 AS MAIN_START, SUM(MAIN_END) AS MAIN_END, 0 AS MAIN_INTERIM,
  21.   0 AS SECONDARY_START, SUM(SECONDARY_END) AS SECONDARY_END, 0 AS SECONDARY_INTERIM FROM rich2 GROUP BY UID, DISTRICT_ID, DISTRICT_NAME, TYPE
  22. ), res AS (
  23.   SELECT UID, DISTRICT_ID, DISTRICT_NAME, TYPE, MAIN_START, MAIN_END, MAIN_INTERIM,
  24.   SECONDARY_START, SECONDARY_END, SECONDARY_INTERIM FROM rich1
  25. UNION ALL
  26.   SELECT UID, DISTRICT_ID, DISTRICT_NAME, TYPE, SUM(MAIN_START) AS MAIN_START, MAIN_END, MAIN_INTERIM,
  27.   SECONDARY_START, SECONDARY_END, SECONDARY_INTERIM FROM rich2
  28. ) SELECT UID, DISTRICT_ID, DISTRICT_NAME, TYPE,
  29.   SUM(MAIN_START) AS MAIN_START, SUM(MAIN_END) AS MAIN_END, SUM(MAIN_START) + SUM(MAIN_END) AS MAIN_INTERIM,
  30.   SUM(SECONDARY_START) AS SECONDARY_START, SUM(SECONDARY_END) AS SECONDARY_END, SUM(SECONDARY_START) + SUM(SECONDARY_END)
  31.  AS SECONDARY_INTERIM FROM res GROUP BY UID, DISTRICT_ID, DISTRICT_NAME, TYPE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement