GuestRT

Radius-Kuzminki

Mar 16th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.47 KB | None | 0 0
  1. CREATE TABLE sandbox.yurbasov_radius_kuzminki AS
  2. -- RADIUS = 0.1 km
  3. -- ,acos(sin((90.0 - v_gps_y) * pi() / 180.0) * sin((90.0 - nextgpsy) * pi() / 180.0)
  4. --       * cos(radians(v_gps_x) - radians(nextgpsx)) +
  5. --           cos((90.0 - v_gps_y) * pi() / 180.0) * cos((90.0 - nextgpsy) * pi() / 180.0)) * 6371000 as distance
  6. -- UNITS = meters
  7. -- Ряз 55.713745_37.809536
  8. -- Ряз 55.726902_37.757538
  9. -- Вол 55.703785_37.780704
  10. -- Вол 55.70383_37.7773
  11. -- Вол 55.704376_37.771225
  12. -- Вол 55.704556_37.768963
  13. -- Вол 55.70649_37.756943
  14. -- Вол 55.70688_37.755238
  15. WITH base1
  16. AS (SELECT
  17.   from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'), 'yyyy-MM-dd') AS DAY,
  18.   v_regno,
  19.   CASE WHEN codd_kafka.v_gps_y > 55 THEN codd_kafka.v_gps_y ELSE codd_kafka.v_gps_x END AS camera_x,
  20.   CASE WHEN codd_kafka.v_gps_y > 55 THEN codd_kafka.v_gps_x ELSE codd_kafka.v_gps_y END AS camera_y,
  21.   lead(v_time_check, 1) OVER (partition BY v_regno ORDER BY v_time_check) AS r_previous_overall,
  22.   v_time_check
  23. FROM codd_data.codd codd_kafka
  24. WHERE (from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd') <= '2018-02-28'
  25. AND from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd') >= '2018-01-01')
  26. ), tgt1 AS (
  27. SELECT 55.713745 AS v_gps_x, 37.809536 AS v_gps_y
  28. UNION ALL SELECT 55.726902 AS v_gps_x, 37.757538 AS v_gps_y
  29. UNION ALL SELECT 55.703785 AS v_gps_x, 37.780704 AS v_gps_y
  30. UNION ALL SELECT 55.70383 AS v_gps_x, 37.7773 AS v_gps_y
  31. UNION ALL SELECT 55.704376 AS v_gps_x, 37.771225 AS v_gps_y
  32. UNION ALL SELECT 55.704556 AS v_gps_x, 37.768963 AS v_gps_y
  33. UNION ALL SELECT 55.70649 AS v_gps_x, 37.756943 AS v_gps_y
  34. UNION ALL SELECT 55.70688 AS v_gps_x, 37.755238 AS v_gps_y
  35. ), pre1 AS
  36. (SELECT
  37.   v_regno,
  38.   camera_x, camera_y,
  39.   MAX(abs(round((unix_timestamp(v_time_check) - unix_timestamp(r_previous_overall))/60, 0))) AS t_diff_next,
  40.   weekofyear(v_time_check) AS w_no,
  41.   COUNT(*) AS cnt
  42. FROM base1
  43. JOIN tgt1
  44. ON acos(sin((90.0 - v_gps_y) * pi() / 180.0) * sin((90.0 - camera_y) * pi() / 180.0) * cos(radians(v_gps_x) - radians(camera_x))
  45.        + cos((90.0 - v_gps_y) * pi() / 180.0) * cos((90.0 - camera_y) * pi() / 180.0)) * 6371000 <= 100
  46. GROUP BY v_regno,
  47.          camera_x, camera_y,
  48.          weekofyear(v_time_check)),
  49. f1 AS (SELECT pre1.v_regno, pre1.cnt FROM pre1 WHERE  t_diff_next >= 0),
  50. xxxx1
  51. AS (SELECT DISTINCT
  52.   v_regno
  53. FROM f1
  54. WHERE cnt >= 6),
  55. par1
  56. AS (SELECT
  57.   phoneno,
  58.   carno
  59. FROM (SELECT
  60.   phoneno,
  61.   carno,
  62.   MAX(from_unixtime(unix_timestamp(parkingstart, 'dd.MM.yyyy HH:mm:ss'), 'yyyy-MM-dd')) AS max_date,
  63.   COUNT(*) AS qty,
  64.   ROW_NUMBER() OVER (PARTITION BY carno ORDER BY COUNT(*) DESC) AS rn
  65. FROM parking_data.parking
  66. WHERE phoneno != 'NULL'
  67. AND from_unixtime(unix_timestamp(parkingstart, 'dd.MM.yyyy HH:mm:ss'), 'yyyy-MM-dd') >= '2017-01-01'
  68. GROUP BY phoneno,
  69.          carno) xx
  70. WHERE rn = 1), extra1 AS (
  71. SELECT
  72.     xxxx1.v_regno AS v_regno
  73.     , sec.regno_hash AS regno_hash
  74.     , sec.regno AS regno
  75. FROM xxxx1
  76.  JOIN secret.regno AS sec ON xxxx1.v_regno = sec.regno_hash
  77.  GROUP BY
  78.  v_regno, regno_hash, regno
  79. ), res1 AS
  80. (SELECT
  81.   extra1.v_regno,
  82.   extra1.regno,
  83.   par1.phoneno
  84. FROM extra1
  85. JOIN par1
  86.   ON extra1.v_regno = par1.carno
  87. WHERE par1.carno IS NOT NULL
  88. GROUP BY
  89. extra1.v_regno, extra1.regno,
  90. par1.phoneno), res AS
  91. (SELECT res1.phoneno, res1.regno, res1.v_regno FROM res1)
  92. SELECT s.phone, res.regno, res.v_regno FROM res JOIN secret.phones s ON s.phone_hash = res.phoneno
Add Comment
Please, Sign In to add comment