GuestRT

strominka

Jan 22nd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.92 KB | None | 0 0
  1. CREATE TABLE sandbox.yurbasov_asana201801221430 AS
  2. WITH pr AS
  3.     (SELECT    
  4.         from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd') AS DAY
  5.         , v_regno
  6.         , concat(v_gps_y, '_', v_gps_x) AS camera_id
  7.         , v_gps_y AS camera_x
  8.         , v_gps_x AS camera_y
  9.         , v_time_check
  10.         , lag(v_time_check, 1) OVER (partition BY v_regno ORDER BY v_time_check) AS l_previous_overall
  11.         , lead(v_time_check, 1) OVER (partition BY v_regno ORDER BY v_time_check) AS r_previous_overall
  12.     FROM codd_stg.codd_kafka
  13.     WHERE from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd') >= '2017-07-10'
  14.   AND from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd') <= '2017-12-31'
  15.      ),
  16.     pre AS (
  17.         SELECT DAY
  18.         , v_regno
  19.         , camera_id
  20.         , camera_x
  21.         , camera_y
  22.         , v_time_check
  23.         , l_previous_overall
  24.         , r_previous_overall
  25.         , lag(camera_id, 1) OVER (partition BY v_regno ORDER BY v_time_check) AS l_cam
  26.         , lead(camera_id, 1) OVER (partition BY v_regno ORDER BY v_time_check) AS r_cam
  27.         , lag(camera_x, 1) OVER (partition BY v_regno ORDER BY v_time_check) AS l_cam_x
  28.         , lead(camera_x, 1) OVER (partition BY v_regno ORDER BY v_time_check) AS r_cam_x
  29.         , lag(camera_y, 1) OVER (partition BY v_regno ORDER BY v_time_check) AS l_cam_y
  30.         , lead(camera_y, 1) OVER (partition BY v_regno ORDER BY v_time_check) AS r_cam_y
  31.         FROM pr
  32.         ),
  33.      time_diff AS (
  34.         SELECT
  35.               DAY
  36.             , v_regno
  37.             , camera_id
  38.             , camera_x
  39.             , camera_y
  40.             , v_time_check
  41.             , abs(round((unix_timestamp(v_time_check) - unix_timestamp(l_previous_overall))/60, 0)) AS t_diff_prev
  42.             , abs(round((unix_timestamp(v_time_check) - unix_timestamp(r_previous_overall))/60, 0)) AS t_diff_next
  43.             , l_cam
  44.             , r_cam
  45.             , l_cam_x
  46.             , r_cam_x
  47.             , l_cam_y
  48.             , r_cam_y
  49.         FROM pre
  50.          ),
  51.      filtered_car AS(
  52.         SELECT
  53.               DAY
  54.             , v_regno
  55.             , camera_id
  56.             , camera_x
  57.             , camera_y
  58.             , v_time_check
  59.             , l_cam
  60.             , r_cam
  61.             , l_cam_x
  62.             , r_cam_x
  63.             , l_cam_y
  64.             , r_cam_y
  65.             , t_diff_prev
  66.             , t_diff_next
  67.     FROM time_diff
  68.     WHERE (camera_id IN ('55.79499_37.70351',
  69.                             '55.79515_37.703358') AND r_cam IN('55.79255_37.68877',
  70.                                                                 '55.789967_37.68305​') AND t_diff_next >= 0 )
  71.          OR ((camera_x >= 55.79499 - 0.02 AND camera_x <= 55.79499 + 0.02
  72.          AND camera_y >= 37.70351 - 0.02 AND camera_y <= 37.70351 + 0.02
  73.          OR camera_x >= 55.79515 - 0.02 AND camera_x <= 55.79515 + 0.02
  74.          AND camera_y >= 37.703358 - 0.02 AND camera_y <= 37.703358 + 0.02) AND
  75.          (r_cam_x >= 55.79255 - 0.02 AND r_cam_x <= 55.79255 + 0.02
  76.          AND r_cam_y >= 37.68877 - 0.02 AND r_cam_y <= 37.68877 + 0.02
  77.          OR r_cam_x >= 55.789967 - 0.02 AND r_cam_x <= 55.789967 + 0.02
  78.          AND r_cam_y >= 37.68305 - 0.02 AND r_cam_y <= 37.68305 + 0.02)) AND t_diff_next >= 0 ),
  79. afin AS (
  80.     SELECT v_regno, COUNT(*) AS cnt
  81.     FROM filtered_car
  82.     GROUP BY v_regno
  83.     ), f AS (
  84. SELECT v_regno
  85. FROM afin
  86. WHERE cnt >= 1 -- 16
  87. ), par AS
  88. (
  89. SELECT phoneno, carno FROM
  90. (
  91. SELECT
  92.     phoneno
  93.     ,  carno
  94.     , MAX(from_unixtime(unix_timestamp(parkingstart, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd')) AS max_date
  95.     , COUNT(*) AS qty
  96.     , ROW_NUMBER() OVER (partition BY carno ORDER BY COUNT(*) DESC) AS rn
  97. FROM parking_data.parking
  98. WHERE phoneno != 'NULL'
  99. AND from_unixtime(unix_timestamp(parkingstart, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd') >= '2017-01-01'
  100. GROUP BY
  101.   phoneno
  102.   , carno
  103. ) xx
  104. WHERE rn = 1
  105. ), extra AS (
  106. SELECT
  107.     f.v_regno AS v_regno,
  108.     sec.regno_hash AS regno_hash,
  109.     sec.regno AS regno
  110. FROM f
  111. JOIN secret.regno AS sec ON f.v_regno = sec.regno_hash
  112. -- WHERE (t_diff_prev >= 300 OR t_diff_next >= 300)
  113. GROUP BY
  114. v_regno, regno_hash, regno
  115. )
  116. SELECT
  117.     extra.regno,
  118.     par.phoneno
  119. FROM extra
  120. JOIN par ON extra.regno = par.carno
  121. WHERE par.carno IS NOT NULL
  122. GROUP BY
  123. extra.regno,
  124. par.phoneno
Add Comment
Please, Sign In to add comment