GuestRT

da50c_calc

Sep 13th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 18.40 KB | None | 0 0
  1.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_01
  2. ;
  3.  
  4.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_02
  5. ;
  6.  
  7.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_03
  8. ;
  9.  
  10.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_04
  11. ;
  12.  
  13.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_05
  14. ;
  15.  
  16.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_06
  17. ;
  18.  
  19.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_07
  20. ;
  21.  
  22.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_08
  23. ;
  24.  
  25.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_09
  26. ;
  27.  
  28.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_10
  29. ;
  30.  
  31.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_11
  32. ;
  33.  
  34.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_12
  35. ;
  36.  
  37.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_13
  38. ;
  39.  
  40.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_14
  41. ;
  42.  
  43.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_15
  44. ;
  45.  
  46.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_16
  47. ;
  48.  
  49.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_17
  50. ;
  51.  
  52.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_18
  53. ;
  54.  
  55.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_19
  56. ;
  57.  
  58.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_20
  59. ;
  60.  
  61.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_21
  62. ;
  63.  
  64.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_22
  65. ;
  66.  
  67.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_23
  68. ;
  69.  
  70.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_24
  71. ;
  72.  
  73.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_25
  74. ;
  75.  
  76.  DROP TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_26
  77. ;
  78.  
  79.  DROP TABLE CITY_EVENT_DATA.D_50C_METRO_CALC_S_NGPT_DATA
  80. ;
  81.  
  82.  SET hivevar:START_DAY_01='2018-08-24'
  83. ;
  84.  
  85.  SET hivevar:END_DAY_01='2018-08-25'
  86. ;
  87.  
  88.  SET hivevar:START_DAY_02='2018-08-31'
  89. ;
  90.  
  91.  SET hivevar:END_DAY_02='2018-09-01'
  92. ;
  93.  
  94.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_01
  95. AS
  96. SELECT nm
  97. ,line
  98. ,MIN(check_day) AS min_day FROM SANDBOX.YURBASOV_D_50B_METRO_CALC_S_NGPT_DATA_12 GROUP BY nm, line ORDER BY nm, line
  99. ;
  100.  
  101.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_02
  102. AS
  103. SELECT nm
  104. ,line
  105. ,route
  106. ,ticket_code
  107. ,cnt
  108. ,check_day
  109. ,CASE WHEN nm IN ('Мичуринский проспект','Озёрная','Говорово','Солнцево','Боровское шоссе','Новопеределкино','Рассказовка') THEN 1 ELSE 0 END AS is_main
  110. ,CASE WHEN nm IN ('Мичуринский проспект','Озёрная','Говорово','Солнцево','Боровское шоссе','Новопеределкино','Рассказовка') THEN 0 ELSE 1 END AS is_extra FROM SANDBOX.YURBASOV_D_50B_METRO_CALC_S_NGPT_DATA_12
  111. ;
  112.  
  113.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_03
  114. AS
  115. SELECT ticket_code, check_day
  116. ,MAX(is_main) AS main_flg
  117. ,MAX(is_extra) AS extra_flg FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_02 GROUP BY ticket_code, check_day
  118. ;
  119.  
  120.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_04
  121. AS
  122. SELECT ticket_code AS x_ticket_code
  123. ,main_flg AS main_flg_a
  124. ,extra_flg AS extra_flg_a FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_03 WHERE check_day < ${hivevar:START_DAY_02}
  125. ;
  126.  
  127.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_05
  128. AS
  129. SELECT ticket_code AS y_ticket_code
  130. ,main_flg AS main_flg_b
  131. ,extra_flg AS extra_flg_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_03 WHERE check_day >= ${hivevar:START_DAY_02}
  132. ;
  133.  
  134.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_06
  135. AS
  136. SELECT ticket_code
  137. ,CASE WHEN extra_flg_a + main_flg_a > 0 THEN 1 ELSE 0 END AS is_old
  138. ,CASE WHEN extra_flg_a + main_flg_a <= 0 THEN 1 ELSE 0 END AS is_new
  139. ,main_flg_a
  140. ,main_flg_b
  141. ,extra_flg_a
  142. ,extra_flg_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_03 JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_04 ON x_ticket_code = ticket_code JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_05 ON y_ticket_code = ticket_code
  143. ;
  144.  
  145.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_07
  146. AS
  147. SELECT ticket_code AS o_ticket_code
  148. ,is_old FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_06 WHERE is_old > 0
  149. ;
  150.  
  151.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_08
  152. AS
  153. SELECT ticket_code AS n_ticket_code
  154. ,is_new
  155. ,main_flg_a
  156. ,main_flg_b
  157. ,extra_flg_a
  158. ,extra_flg_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_06 WHERE is_new > 0
  159. ;
  160.  
  161.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_09
  162. AS
  163. SELECT nm
  164. ,line
  165. ,route
  166. ,ticket_code
  167. ,cnt
  168. ,check_day
  169. ,is_old
  170. ,is_new
  171. ,main_flg_a
  172. ,main_flg_b
  173. ,extra_flg_a
  174. ,extra_flg_b FROM SANDBOX.YURBASOV_D_50B_METRO_CALC_S_NGPT_DATA_12 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_07 ON o_ticket_code = ticket_code LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_08 ON n_ticket_code = ticket_code
  175. ;
  176.  
  177.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_10
  178. AS
  179. SELECT nm
  180. ,line
  181. ,route
  182. ,ticket_code
  183. ,CAST(cnt AS BIGINT) AS cnt
  184. ,check_day
  185. ,is_old
  186. ,is_new
  187. ,main_flg_a
  188. ,main_flg_b
  189. ,extra_flg_a
  190. ,extra_flg_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_09 WHERE check_day < ${hivevar:START_DAY_02}
  191. ;
  192.  
  193.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_11
  194. AS
  195. SELECT nm AS nm_11
  196. ,line AS line_11
  197. ,SUM(cnt) AS total_cnt_a FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_10 GROUP BY nm, line
  198. ;
  199.  
  200.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_12
  201. AS
  202. SELECT nm
  203. ,line
  204. ,route
  205. ,ticket_code
  206. ,CAST(cnt AS BIGINT) AS cnt
  207. ,check_day
  208. ,is_old
  209. ,is_new
  210. ,main_flg_a
  211. ,main_flg_b
  212. ,extra_flg_a
  213. ,extra_flg_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_09 WHERE check_day >= ${hivevar:START_DAY_02}
  214. ;
  215.  
  216.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_13
  217. AS
  218. SELECT nm AS nm_13
  219. ,line AS line_13
  220. ,SUM(cnt) AS total_cnt_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_12 GROUP BY nm, line
  221. ;
  222.  
  223.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_14
  224. AS
  225. SELECT nm
  226. ,line
  227. ,route
  228. ,ticket_code
  229. ,CAST(cnt AS BIGINT) AS cnt
  230. ,check_day
  231. ,is_old
  232. ,is_new
  233. ,main_flg_a
  234. ,main_flg_b
  235. ,extra_flg_a
  236. ,extra_flg_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_09 WHERE route != 'метро' AND check_day < ${hivevar:START_DAY_02}
  237. ;
  238.  
  239.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_15
  240. AS
  241. SELECT nm AS nm_15
  242. ,line AS line_15
  243. ,SUM(cnt) AS ngpt_cnt_a FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_14 GROUP BY nm, line
  244. ;
  245.  
  246.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_16
  247. AS
  248. SELECT nm
  249. ,line
  250. ,route
  251. ,ticket_code
  252. ,CAST(cnt AS BIGINT) AS cnt
  253. ,check_day
  254. ,is_old
  255. ,is_new
  256. ,main_flg_a
  257. ,main_flg_b
  258. ,extra_flg_a
  259. ,extra_flg_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_09 WHERE route != 'метро' AND check_day >= ${hivevar:START_DAY_02}
  260. ;
  261.  
  262.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_17
  263. AS
  264. SELECT nm AS nm_17
  265. ,line AS line_17
  266. ,SUM(cnt) AS ngpt_cnt_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_16 GROUP BY nm, line
  267. ;
  268.  
  269.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_18
  270. AS
  271. SELECT nm AS nm_18
  272. ,line AS line_18
  273. ,SUM(cnt) AS new_total_cnt_a FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_10 GROUP BY nm, line, is_new HAVING is_new > 0
  274. ;
  275.  
  276.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_19
  277. AS
  278. SELECT nm AS nm_19
  279. ,line AS line_19
  280. ,SUM(cnt) AS new_total_cnt_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_12 GROUP BY nm, line, is_new HAVING is_new > 0
  281. ;
  282.  
  283.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_20
  284. AS
  285. SELECT nm AS nm_20
  286. ,line AS line_20
  287. ,SUM(cnt) AS new_ngpt_cnt_a FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_14 GROUP BY nm, line, is_new HAVING is_new > 0
  288. ;
  289.  
  290.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_21
  291. AS
  292. SELECT nm AS nm_21
  293. ,line AS line_21
  294. ,SUM(cnt) AS new_ngpt_cnt_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_16 GROUP BY nm, line, is_new HAVING is_new > 0
  295. ;
  296.  
  297.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_22
  298. AS
  299. SELECT nm AS nm_22
  300. ,line AS line_22
  301. ,SUM(cnt) AS old_total_cnt_a FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_10 GROUP BY nm, line, is_old HAVING is_old > 0
  302. ;
  303.  
  304.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_23
  305. AS
  306. SELECT nm AS nm_23
  307. ,line AS line_23
  308. ,SUM(cnt) AS old_total_cnt_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_12 GROUP BY nm, line, is_old HAVING is_old > 0
  309. ;
  310.  
  311.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_24
  312. AS
  313. SELECT nm AS nm_24
  314. ,line AS line_24
  315. ,SUM(cnt) AS old_ngpt_cnt_a FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_14 GROUP BY nm, line, is_old HAVING is_old > 0
  316. ;
  317.  
  318.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_25
  319. AS
  320. SELECT nm AS nm_25
  321. ,line AS line_25
  322. ,SUM(cnt) AS old_ngpt_cnt_b FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_16 GROUP BY nm, line, is_old HAVING is_old > 0
  323. ;
  324.  
  325.  CREATE TABLE SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_26
  326. AS
  327. SELECT nm
  328. ,line
  329. ,CASE WHEN total_cnt_a + total_cnt_b > 0 THEN 1 - total_cnt_b / (total_cnt_a + total_cnt_b) ELSE 0.0 END AS p
  330. ,total_cnt_a
  331. ,total_cnt_b
  332. ,ngpt_cnt_a
  333. ,ngpt_cnt_b
  334.         ,CASE WHEN new_total_cnt_a > 0 THEN new_total_cnt_a ELSE 0 END AS new_total_cnt_a
  335.         ,CASE WHEN new_total_cnt_b > 0 THEN new_total_cnt_b ELSE 0 END AS new_total_cnt_b
  336.         ,CASE WHEN new_ngpt_cnt_a > 0 THEN new_ngpt_cnt_a ELSE 0 END AS new_ngpt_cnt_a
  337.         ,CASE WHEN new_ngpt_cnt_b > 0 THEN new_ngpt_cnt_b ELSE 0 END AS new_ngpt_cnt_b
  338.         ,old_total_cnt_a
  339.         ,old_total_cnt_b
  340.         ,old_ngpt_cnt_a
  341.         ,old_ngpt_cnt_b
  342.         ,CASE WHEN new_ngpt_cnt_b + new_ngpt_cnt_a > 0 THEN old_total_cnt_b + new_total_cnt_b - old_total_cnt_a - new_total_cnt_a ELSE old_total_cnt_b - old_total_cnt_a END AS auto_cnt_delta
  343.         ,min_day FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_01 JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_11 ON nm = nm_11 AND line = line_11 JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_13 ON nm = nm_13 AND line = line_13 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_15 ON nm = nm_15 AND line = line_15 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_17 ON nm = nm_17 AND line = line_17 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_18 ON nm = nm_18 AND line = line_18 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_19 ON nm = nm_19 AND line = line_19 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_20 ON nm = nm_20 AND line = line_20 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_21 ON nm = nm_21 AND line = line_21 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_22 ON nm = nm_22 AND line = line_22 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_23 ON nm = nm_23 AND line = line_23 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_24 ON nm = nm_24 AND line = line_24 LEFT JOIN SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_25 ON nm = nm_25 AND line = line_25 ORDER BY p DESC
  344. ;
  345.  
  346.  CREATE TABLE CITY_EVENT_DATA.D_50C_METRO_CALC_S_NGPT_DATA(
  347. `nm`  string
  348. ,`line`  string
  349. ,`p`  string
  350. ,`total_cnt_a`  string
  351. ,`total_cnt_b`  string
  352. ,`ngpt_cnt_a`  string
  353. ,`ngpt_cnt_b`  string
  354. ,`new_total_cnt_a`  string
  355. ,`new_total_cnt_b`  string
  356. ,`new_ngpt_cnt_a`  string
  357. ,`new_ngpt_cnt_b`  string
  358. ,`old_total_cnt_a`  string
  359. ,`old_total_cnt_b`  string
  360. ,`old_ngpt_cnt_a`  string
  361. ,`old_ngpt_cnt_b`  string
  362. ,`auto_cnt_delta`  string
  363. ) PARTITIONED BY (`min_day` string) STORED AS ORC tblproperties ("orc.compress"="SNAPPY")
  364. ;
  365.  
  366.  INSERT INTO CITY_EVENT_DATA.D_50C_METRO_CALC_S_NGPT_DATA PARTITION (min_day)
  367. SELECT nm AS nm
  368. ,line AS line
  369. ,p AS p
  370. ,total_cnt_a AS total_cnt_a
  371. ,total_cnt_b AS total_cnt_b
  372. ,ngpt_cnt_a AS ngpt_cnt_a
  373. ,ngpt_cnt_b AS ngpt_cnt_b
  374. ,new_total_cnt_a AS new_total_cnt_a
  375. ,new_total_cnt_b AS new_total_cnt_b
  376. ,new_ngpt_cnt_a AS new_ngpt_cnt_a
  377. ,new_ngpt_cnt_b AS new_ngpt_cnt_b
  378. ,old_total_cnt_a AS old_total_cnt_a
  379. ,old_total_cnt_b AS old_total_cnt_b
  380. ,old_ngpt_cnt_a AS old_ngpt_cnt_a
  381. ,old_ngpt_cnt_b AS old_ngpt_cnt_b
  382. ,auto_cnt_delta AS auto_cnt_delta
  383. ,min_day FROM SANDBOX.YURBASOV_D_50C_METRO_CALC_S_NGPT_DATA_26
  384. ;
  385.  
  386.  CREATE TABLE IC_CALC.D_50_METRO_CALC_S_NGPT_DATA(
  387. `nm`  string
  388. ,`line`  string
  389. ,`p`  string
  390. ,`total_cnt_a`  string
  391. ,`total_cnt_b`  string
  392. ,`ngpt_cnt_a`  string
  393. ,`ngpt_cnt_b`  string
  394. ,`new_total_cnt_a`  string
  395. ,`new_total_cnt_b`  string
  396. ,`new_ngpt_cnt_a`  string
  397. ,`new_ngpt_cnt_b`  string
  398. ,`old_total_cnt_a`  string
  399. ,`old_total_cnt_b`  string
  400. ,`old_ngpt_cnt_a`  string
  401. ,`old_ngpt_cnt_b`  string
  402. ,`auto_cnt_delta`  string
  403. ) PARTITIONED BY (`min_day` string) STORED AS ORC tblproperties ("orc.compress"="SNAPPY")
  404. ;
  405.  
  406.  INSERT INTO IC_CALC.D_50_METRO_CALC_S_NGPT_DATA PARTITION (min_day)
  407. WITH
  408. t_01 AS
  409. (
  410. SELECT nm
  411. ,line
  412. ,MIN(check_day) AS min_day FROM SANDBOX.YURBASOV_D_50B_METRO_CALC_S_NGPT_DATA_12 GROUP BY nm, line ORDER BY nm, line
  413. ),
  414. t_02 AS
  415. (
  416. SELECT nm
  417. ,line
  418. ,route
  419. ,ticket_code
  420. ,cnt
  421. ,check_day
  422. ,CASE WHEN nm IN ('Мичуринский проспект','Озёрная','Говорово','Солнцево','Боровское шоссе','Новопеределкино','Рассказовка') THEN 1 ELSE 0 END AS is_main
  423. ,CASE WHEN nm IN ('Мичуринский проспект','Озёрная','Говорово','Солнцево','Боровское шоссе','Новопеределкино','Рассказовка') THEN 0 ELSE 1 END AS is_extra FROM SANDBOX.YURBASOV_D_50B_METRO_CALC_S_NGPT_DATA_12
  424. ),
  425. t_03 AS
  426. (
  427. SELECT ticket_code
  428. ,MAX(is_main) AS main_flg
  429. ,MAX(is_extra) AS extra_flg FROM t_02 GROUP BY ticket_code, check_day
  430. ),
  431. t_04 AS
  432. (
  433. SELECT ticket_code AS x_ticket_code
  434. ,main_flg AS main_flg_a
  435. ,extra_flg AS extra_flg_a FROM t_03 WHERE check_day < ${hivevar:START_DAY_02}
  436. ),
  437. t_05 AS
  438. (
  439. SELECT ticket_code AS y_ticket_code
  440. ,main_flg AS main_flg_b
  441. ,extra_flg AS extra_flg_b FROM t_03 WHERE check_day >= ${hivevar:START_DAY_02}
  442. ),
  443. t_06 AS
  444. (
  445. SELECT ticket_code
  446. ,CASE WHEN extra_val_a + main_val_a > 0 THEN 1 ELSE 0 END AS is_old
  447. ,CASE WHEN extra_val_a + main_val_a <= 0 THEN 1 ELSE 0 END AS is_new
  448. ,main_flg_a
  449. ,main_flg_b
  450. ,extra_flg_a
  451. ,extra_flg_b FROM t_03 JOIN t_04 ON x_ticket_code = ticket_code JOIN t_05 ON y_ticket_code = ticket_code
  452. ),
  453. t_07 AS
  454. (
  455. SELECT ticket_code AS o_ticket_code
  456. ,is_old FROM t_06 WHERE is_old > 0
  457. ),
  458. t_08 AS
  459. (
  460. SELECT ticket_code AS n_ticket_code
  461. ,is_new
  462. ,main_flg_a
  463. ,main_flg_b
  464. ,extra_flg_a
  465. ,extra_flg_b FROM t_06 WHERE is_new > 0
  466. ),
  467. t_09 AS
  468. (
  469. SELECT nm
  470. ,line
  471. ,route
  472. ,ticket_code
  473. ,cnt
  474. ,check_day
  475. ,is_old
  476. ,is_new
  477. ,main_flg_a
  478. ,main_flg_b
  479. ,extra_flg_a
  480. ,extra_flg_b FROM SANDBOX.YURBASOV_D_50B_METRO_CALC_S_NGPT_DATA_12 LEFT JOIN t_07 ON o_ticket_code = ticket_code LEFT JOIN t_08 ON n_ticket_code = ticket_code
  481. ),
  482. t_10 AS
  483. (
  484. SELECT nm
  485. ,line
  486. ,route
  487. ,ticket_code
  488. ,CAST(cnt AS BIGINT) AS cnt
  489. ,check_day
  490. ,is_old
  491. ,is_new
  492. ,main_flg_a
  493. ,main_flg_b
  494. ,extra_flg_a
  495. ,extra_flg_b FROM t_09 WHERE check_day < ${hivevar:START_DAY_02}
  496. ),
  497. t_11 AS
  498. (
  499. SELECT nm AS nm_11
  500. ,line AS nm_11
  501. ,SUM(cnt) AS total_cnt_a FROM t_10 GROUP BY nm, line
  502. ),
  503. t_12 AS
  504. (
  505. SELECT nm
  506. ,line
  507. ,route
  508. ,ticket_code
  509. ,CAST(cnt AS BIGINT) AS cnt
  510. ,check_day
  511. ,is_old
  512. ,is_new
  513. ,main_flg_a
  514. ,main_flg_b
  515. ,extra_flg_a
  516. ,extra_flg_b FROM t_09 WHERE check_day >= ${hivevar:START_DAY_02}
  517. ),
  518. t_13 AS
  519. (
  520. SELECT nm AS nm_13
  521. ,line AS line_13
  522. ,SUM(cnt) AS total_cnt_b FROM t_12 GROUP BY nm, line
  523. ),
  524. t_14 AS
  525. (
  526. SELECT nm
  527. ,line
  528. ,route
  529. ,ticket_code
  530. ,CAST(cnt AS BIGINT) AS cnt
  531. ,check_day
  532. ,is_old
  533. ,is_new
  534. ,main_flg_a
  535. ,main_flg_b
  536. ,extra_flg_a
  537. ,extra_flg_b FROM t_09 WHERE route != 'метро' AND check_day < ${hivevar:START_DAY_02}
  538. ),
  539. t_15 AS
  540. (
  541. SELECT nm AS nm_15
  542. ,line AS line_15
  543. ,SUM(cnt) AS ngpt_cnt_a FROM t_14 GROUP BY nm, line
  544. ),
  545. t_16 AS
  546. (
  547. SELECT nm
  548. ,line
  549. ,route
  550. ,ticket_code
  551. ,CAST(cnt AS BIGINT) AS cnt
  552. ,check_day
  553. ,is_old
  554. ,is_new
  555. ,main_flg_a
  556. ,main_flg_b
  557. ,extra_flg_a
  558. ,extra_flg_b FROM t_09 WHERE route != 'метро' AND check_day >= ${hivevar:START_DAY_02}
  559. ),
  560. t_17 AS
  561. (
  562. SELECT nm AS nm_17
  563. ,line AS line_17
  564. ,SUM(cnt) AS ngpt_cnt_b FROM t_16 GROUP BY nm, line
  565. ),
  566. t_18 AS
  567. (
  568. SELECT nm AS nm_18
  569. ,line AS line_18
  570. ,SUM(cnt) AS new_total_cnt_a FROM t_10 GROUP BY nm, line HAVING is_new > 0
  571. ),
  572. t_19 AS
  573. (
  574. SELECT nm AS nm_19
  575. ,line AS line_19
  576. ,SUM(cnt) AS new_total_cnt_b FROM t_12 GROUP BY nm, line HAVING is_new > 0
  577. ),
  578. t_20 AS
  579. (
  580. SELECT nm AS nm_20
  581. ,line AS line_20
  582. ,SUM(cnt) AS new_ngpt_cnt_a FROM t_14 GROUP BY nm, line HAVING is_new > 0
  583. ),
  584. t_21 AS
  585. (
  586. SELECT nm AS nm_21
  587. ,line AS line_21
  588. ,SUM(cnt) AS new_ngpt_cnt_b FROM t_16 GROUP BY nm, line HAVING is_new > 0
  589. ),
  590. t_22 AS
  591. (
  592. SELECT nm AS nm_22
  593. ,line AS line_22
  594. ,SUM(cnt) AS new_total_cnt_a FROM t_10 GROUP BY nm, line HAVING is_old > 0
  595. ),
  596. t_23 AS
  597. (
  598. SELECT nm AS nm_23
  599. ,line AS line_23
  600. ,SUM(cnt) AS old_total_cnt_b FROM t_12 GROUP BY nm, line HAVING is_old > 0
  601. ),
  602. t_24 AS
  603. (
  604. SELECT nm AS nm_24
  605. ,line AS line_24
  606. ,SUM(cnt) AS old_ngpt_cnt_a FROM t_14 GROUP BY nm, line HAVING is_old > 0
  607. ),
  608. t_25 AS
  609. (
  610. SELECT nm AS nm_25
  611. ,line AS line_25
  612. ,SUM(cnt) AS old_ngpt_cnt_b FROM t_16 GROUP BY nm, line HAVING is_old > 0
  613. ),
  614. t_26 AS
  615. (
  616. SELECT nm
  617. ,line
  618. ,1 - total_cnt_b / (total_cnt_a + total_cnt_b) AS p
  619. ,total_cnt_a
  620. ,total_cnt_b
  621. ,ngpt_cnt_a
  622. ,ngpt_cnt_b
  623. ,new_total_cnt_a
  624. ,new_total_cnt_b
  625. ,new_ngpt_cnt_a
  626. ,new_ngpt_cnt_b
  627. ,old_total_cnt_a
  628. ,old_total_cnt_b
  629. ,old_ngpt_cnt_a
  630. ,old_ngpt_cnt_b
  631. ,old_total_cnt_b + new_total_cnt_b - old_total_cnt_a - new_total_cnt_a AS auto_cnt_delta
  632. ,min_day FROM t_01 JOIN t_11 ON nm = nm_11 AND line = line_11 JOIN t_13 ON nm = nm_13 AND line = line_13 JOIN t_15 ON nm = nm_15 AND line = line_15 JOIN t_17 ON nm = nm_17 AND line = line_17 JOIN t_18 ON nm = nm_18 AND line = line_18 JOIN t_19 ON nm = nm_19 AND line = line_19 JOIN t_20 ON nm = nm_20 AND line = line_20 JOIN t_21 ON nm = nm_21 AND line = line_21 JOIN t_22 ON nm = nm_22 AND line = line_22 JOIN t_23 ON nm = nm_23 AND line = line_23 JOIN t_24 ON nm = nm_24 AND line = line_24 JOIN t_25 ON nm = nm_25 AND line = line_25 ORDER BY p DESC
  633. )
  634. SELECT nm AS nm
  635. ,line AS line
  636. ,p AS p
  637. ,total_cnt_a AS total_cnt_a
  638. ,total_cnt_b AS total_cnt_b
  639. ,ngpt_cnt_a AS ngpt_cnt_a
  640. ,ngpt_cnt_b AS ngpt_cnt_b
  641. ,new_total_cnt_a AS new_total_cnt_a
  642. ,new_total_cnt_b AS new_total_cnt_b
  643. ,new_ngpt_cnt_a AS new_ngpt_cnt_a
  644. ,new_ngpt_cnt_b AS new_ngpt_cnt_b
  645. ,old_total_cnt_a AS old_total_cnt_a
  646. ,old_total_cnt_b AS old_total_cnt_b
  647. ,old_ngpt_cnt_a AS old_ngpt_cnt_a
  648. ,old_ngpt_cnt_b AS old_ngpt_cnt_b
  649. ,auto_cnt_delta AS auto_cnt_delta
  650. ,min_day FROM t_26
  651. ;
Advertisement
Add Comment
Please, Sign In to add comment