GuestRT

Auto-Hamovniki-2

Mar 20th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.46 KB | None | 0 0
  1. CREATE TABLE sandbox.yurbasov_auto_hamovniki2 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. -- Низ:
  8. -- 55.722374_37.554565
  9. -- 55.719994_37.565254
  10. -- 55.719994_37.565254
  11. -- 55.72389_37.556355
  12. -- 55.71737_37.573135
  13. -- 55.719307_37.571976
  14. -- Лево:
  15. -- 55.728832_37.55376
  16. -- 55.73025_37.55647
  17. -- 55.732586_37.56022
  18. -- 55.73375_37.563133
  19. -- 55.738377_37.570057
  20. -- 55.74216_37.57295
  21. -- Верх:
  22. -- 55.74254_37.58467
  23. -- 55.73767_37.58789
  24. -- 55.736633_37.589302
  25. -- 55.735397_37.594067
  26. -- 55.735035_37.594757
  27. -- 55.735043_37.595882
  28. -- 55.73404_37.596207
  29. -- Право:
  30. -- 55.73205_37.59539
  31. -- 55.7254_37.589767
  32. -- 55.724308_37.58871
  33. -- 55.7226_37.58692
  34. -- 55.71958_37.58365
  35. -- 55.71746_37.580692
  36. WITH base1
  37. AS (SELECT
  38.   from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'), 'yyyy-MM-dd') AS DAY,
  39.   v_regno,
  40.   CASE WHEN codd_kafka.v_gps_y > 55 THEN codd_kafka.v_gps_y ELSE codd_kafka.v_gps_x END AS camera_x,
  41.   CASE WHEN codd_kafka.v_gps_y > 55 THEN codd_kafka.v_gps_x ELSE codd_kafka.v_gps_y END AS camera_y,
  42.   lead(v_time_check, 1) OVER (partition BY v_regno ORDER BY v_time_check) AS r_previous_overall,
  43.   v_time_check
  44. FROM codd_data.codd codd_kafka
  45. WHERE (from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd') <= '2018-02-28'
  46. AND from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd') >= '2018-01-01')
  47. ), tgt1 AS
  48. (
  49. -- Низ:
  50. -- 55.722374_37.554565
  51. -- 55.719994_37.565254
  52. -- 55.719994_37.565254
  53. -- 55.72389_37.556355
  54. -- 55.71737_37.573135
  55. -- 55.719307_37.571976
  56. SELECT 55.722374 AS v_gps_x, 37.554565 AS v_gps_y
  57. UNION ALL SELECT 55.719994 AS v_gps_x, 37.565254 AS v_gps_y
  58. UNION ALL SELECT 55.719994 AS v_gps_x, 37.565254 AS v_gps_y
  59. UNION ALL SELECT 55.72389 AS v_gps_x, 37.556355 AS v_gps_y
  60. UNION ALL SELECT 55.71737 AS v_gps_x, 37.573135 AS v_gps_y
  61. UNION ALL SELECT 55.719307 AS v_gps_x, 37.571976 AS v_gps_y
  62. -- Лево:
  63. -- 55.728832_37.55376
  64. -- 55.73025_37.55647
  65. -- 55.732586_37.56022
  66. -- 55.73375_37.563133
  67. -- 55.738377_37.570057
  68. -- 55.74216_37.57295
  69. UNION ALL SELECT 55.728832 AS v_gps_x, 37.55376 AS v_gps_y
  70. UNION ALL SELECT 55.73025 AS v_gps_x, 37.55647 AS v_gps_y
  71. UNION ALL SELECT 55.732586 AS v_gps_x, 37.56022 AS v_gps_y
  72. UNION ALL SELECT 55.73375 AS v_gps_x, 37.563133 AS v_gps_y
  73. UNION ALL SELECT 55.738377 AS v_gps_x, 37.570057 AS v_gps_y
  74. UNION ALL SELECT 55.74216 AS v_gps_x, 37.57295 AS v_gps_y
  75. -- Верх:
  76. -- 55.74254_37.58467
  77. -- 55.73767_37.58789
  78. -- 55.736633_37.589302
  79. -- 55.735397_37.594067
  80. -- 55.735035_37.594757
  81. -- 55.735043_37.595882
  82. -- 55.73404_37.596207
  83. UNION ALL SELECT 55.74254 AS v_gps_x, 37.58467 AS v_gps_y
  84. UNION ALL SELECT 55.73767 AS v_gps_x, 37.58789 AS v_gps_y
  85. UNION ALL SELECT 55.736633 AS v_gps_x, 37.589302 AS v_gps_y
  86. UNION ALL SELECT 55.735397 AS v_gps_x, 37.594067 AS v_gps_y
  87. UNION ALL SELECT 55.735035 AS v_gps_x, 37.594757 AS v_gps_y
  88. UNION ALL SELECT 55.735043 AS v_gps_x, 37.595882 AS v_gps_y
  89. UNION ALL SELECT 55.73404 AS v_gps_x, 37.596207 AS v_gps_y
  90. -- Право:
  91. -- 55.73205_37.59539
  92. -- 55.7254_37.589767
  93. -- 55.724308_37.58871
  94. -- 55.7226_37.58692
  95. -- 55.71958_37.58365
  96. -- 55.71746_37.580692
  97. UNION ALL SELECT 55.73205 AS v_gps_x, 37.59539 AS v_gps_y
  98. UNION ALL SELECT 55.7254 AS v_gps_x, 37.589767 AS v_gps_y
  99. UNION ALL SELECT 55.724308 AS v_gps_x, 37.58871 AS v_gps_y
  100. UNION ALL SELECT 55.7226 AS v_gps_x, 37.58692 AS v_gps_y
  101. UNION ALL SELECT 55.71958 AS v_gps_x, 37.58365 AS v_gps_y
  102. UNION ALL SELECT 55.71746 AS v_gps_x, 37.580692 AS v_gps_y
  103. ), pre1 AS
  104. (SELECT
  105.   v_regno,
  106.   camera_x, camera_y,
  107.   MAX(abs(round((unix_timestamp(v_time_check) - unix_timestamp(r_previous_overall))/60, 0))) AS t_diff_next,
  108.   weekofyear(v_time_check) AS w_no,
  109.   COUNT(*) AS cnt
  110. FROM base1
  111. JOIN tgt1
  112. 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))
  113.        + cos((90.0 - v_gps_y) * pi() / 180.0) * cos((90.0 - camera_y) * pi() / 180.0)) * 6371000 <= 100
  114. GROUP BY v_regno,
  115.          camera_x, camera_y,
  116.          weekofyear(v_time_check)),
  117. f1 AS (SELECT pre1.v_regno, pre1.cnt FROM pre1 WHERE  t_diff_next >= 0),
  118. xxxx1
  119. AS (SELECT DISTINCT
  120.   v_regno
  121. FROM f1
  122. WHERE cnt >= 12),
  123. par1
  124. AS (SELECT
  125.   phoneno,
  126.   carno
  127. FROM (SELECT
  128.   phoneno,
  129.   carno,
  130.   MAX(from_unixtime(unix_timestamp(parkingstart, 'dd.MM.yyyy HH:mm:ss'), 'yyyy-MM-dd')) AS max_date,
  131.   COUNT(*) AS qty,
  132.   ROW_NUMBER() OVER (PARTITION BY carno ORDER BY COUNT(*) DESC) AS rn
  133. FROM parking_data.parking
  134. WHERE phoneno != 'NULL'
  135. AND from_unixtime(unix_timestamp(parkingstart, 'dd.MM.yyyy HH:mm:ss'), 'yyyy-MM-dd') >= '2017-01-01'
  136. GROUP BY phoneno,
  137.          carno) xx
  138. WHERE rn = 1), extra1 AS (
  139. SELECT
  140.     xxxx1.v_regno AS v_regno
  141.     , sec.regno_hash AS regno_hash
  142.     , sec.regno AS regno
  143. FROM xxxx1
  144.  JOIN secret.regno AS sec ON xxxx1.v_regno = sec.regno_hash
  145.  GROUP BY
  146.  v_regno, regno_hash, regno
  147. ), res1 AS
  148. (SELECT
  149.   extra1.v_regno,
  150.   extra1.regno,
  151.   par1.phoneno
  152. FROM extra1
  153. JOIN par1
  154.   ON extra1.v_regno = par1.carno
  155. WHERE par1.carno IS NOT NULL
  156. GROUP BY
  157. extra1.v_regno, extra1.regno,
  158. par1.phoneno), res AS
  159. (SELECT res1.phoneno, res1.regno, res1.v_regno FROM res1)
  160. 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