Advertisement
GuestRT

Simple Strominka

Jan 24th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.07 KB | None | 0 0
  1. CREATE TABLE sandbox.yurbasov_staromynka5 AS
  2.  
  3. WITH base
  4. AS (SELECT
  5.   from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'), 'yyyy-MM-dd') AS DAY,
  6.   v_regno,
  7.   concat(codd_kafka.v_gps_y, '_', codd_kafka.v_gps_x) AS camera_id,
  8.   v_time_check
  9. FROM codd_data.codd_kafka_batch codd_kafka
  10. WHERE from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd') < '2017-12-01'
  11.   UNION ALL
  12. SELECT
  13.   from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'), 'yyyy-MM-dd') AS DAY,
  14.   v_regno,
  15.   concat(codd_kafka.v_gps_y, '_', codd_kafka.v_gps_x) AS camera_id,
  16.   v_time_check
  17. FROM codd_data.codd codd_kafka
  18. WHERE from_unixtime(unix_timestamp(v_time_check, 'dd.MM.yyyy HH:mm:ss'),'yyyy-MM-dd') < '2017-12-01'
  19. ),
  20. pre
  21. AS (SELECT
  22.   v_regno,
  23.   camera_id,
  24.   weekofyear(v_time_check) AS w_no,
  25.   COUNT(*) AS cnt
  26. FROM base
  27. WHERE camera_id IN ('55.784832_37.696632', '55.789967_37.68305', '37.696632_55.784832', '37.68305_55.789967')
  28. GROUP BY v_regno,
  29.          camera_id,
  30.          weekofyear(v_time_check)),
  31. xxxx
  32. AS (SELECT DISTINCT
  33.   v_regno
  34. FROM pre
  35. WHERE cnt >= 2),
  36. par
  37. AS (SELECT
  38.   phoneno,
  39.   carno
  40. FROM (SELECT
  41.   phoneno,
  42.   carno,
  43.   MAX(from_unixtime(unix_timestamp(parkingstart, 'dd.MM.yyyy HH:mm:ss'), 'yyyy-MM-dd')) AS max_date,
  44.   COUNT(*) AS qty,
  45.   ROW_NUMBER() OVER (PARTITION BY carno ORDER BY COUNT(*) DESC) AS rn
  46.  
  47. FROM parking_data.parking
  48. WHERE phoneno != 'NULL'
  49. AND from_unixtime(unix_timestamp(parkingstart, 'dd.MM.yyyy HH:mm:ss'), 'yyyy-MM-dd') >= '2017-01-01'
  50. GROUP BY phoneno,
  51.          carno) xx
  52. WHERE rn = 1), extra AS (
  53. SELECT
  54.     xxxx.v_regno AS v_regno
  55.     , sec.regno_hash AS regno_hash
  56.     , sec.regno AS regno
  57. FROM xxxx
  58.  JOIN secret.regno AS sec ON xxxx.v_regno = sec.regno_hash
  59.  GROUP BY
  60.  v_regno, regno_hash, regno
  61. ), res AS
  62. (SELECT
  63.   extra.v_regno,
  64.   extra.regno,
  65.   par.phoneno
  66. FROM extra
  67. JOIN par
  68.   ON extra.v_regno = par.carno
  69. WHERE par.carno IS NOT NULL
  70. GROUP BY
  71. extra.v_regno, extra.regno,
  72. par.phoneno) SELECT s.phone, res.regno, res.v_regno FROM res
  73. JOIN secret.phones s ON s.phone_hash = res.phoneno
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement