graph_test.sql 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. DROP TABLE IF EXISTS temp_core_nodes;
  2. DROP TABLE IF EXISTS other_filter_all_rel_edge;
  3. DROP TABLE IF EXISTS other_filter_rel_edge;
  4. DROP TABLE IF EXISTS other_core_nodes;
  5. DROP TABLE IF EXISTS call_filter_all_rel_edge;
  6. DROP TABLE IF EXISTS call_filter_rel_edge;
  7. DROP TABLE IF EXISTS call_core_nodes;
  8. DROP TABLE IF EXISTS trans_filter_all_rel_edge;
  9. DROP TABLE IF EXISTS trans_filter_rel_edge;
  10. DROP TABLE IF EXISTS trans_core_nodes;
  11. DROP TABLE IF EXISTS final_rel_edge;
  12. CREATE
  13. TEMP TABLE final_rel_edge AS
  14. SELECT CAST(NULL AS VARCHAR) AS node1,
  15. CAST(NULL AS VARCHAR) AS node2,
  16. CAST(NULL AS VARCHAR) AS node1cn,
  17. CAST(NULL AS VARCHAR) AS node2cn,
  18. CAST(NULL AS VARCHAR) AS mc,
  19. CAST(NULL AS VARCHAR) AS clazz,
  20. CAST(NULL AS VARCHAR) AS num,
  21. CAST(NULL AS INTEGER) AS fx,
  22. CAST(NULL AS INTEGER) AS lx WHERE 1 = 0;
  23. CREATE
  24. TEMP TABLE temp_core_nodes AS
  25. SELECT unnest(['高某某']) AS node_id,
  26. unnest(['obj']) AS node_type;
  27. CREATE
  28. TEMP TABLE trans_core_nodes AS
  29. SELECT *
  30. FROM temp_core_nodes;
  31. CREATE
  32. TEMP TABLE trans_filter_all_rel_edge AS
  33. SELECT node1,
  34. node2,
  35. ANY_VALUE(node1cn) AS node1cn,
  36. ANY_VALUE(node2cn) AS node2cn,
  37. ANY_VALUE(mc) AS mc,
  38. ANY_VALUE(clazz) AS clazz,
  39. sum(num::decimal) AS num,
  40. sj AS sj,
  41. ANY_VALUE(fx) AS fx,
  42. ANY_VALUE(lx) AS lx
  43. FROM rel_edge
  44. WHERE clazz = 'card_card'
  45. GROUP BY node1, node2, sj;
  46. CREATE
  47. TEMP TABLE trans_filter_rel_edge AS
  48. SELECT *
  49. FROM (SELECT *
  50. FROM trans_filter_all_rel_edge
  51. WHERE clazz = 'card_card'
  52. AND fx = 1
  53. AND node1 IN (SELECT node_id FROM temp_core_nodes)
  54. AND node2 NOT IN (SELECT node_id FROM temp_core_nodes)
  55. UNION ALL
  56. SELECT *
  57. FROM trans_filter_all_rel_edge
  58. WHERE clazz = 'card_card'
  59. AND fx = 2
  60. AND node1 NOT IN (SELECT node_id FROM temp_core_nodes)
  61. AND node2 IN (SELECT node_id FROM temp_core_nodes)) AS combined_edges;
  62. insert into trans_core_nodes
  63. select node_id, node_type
  64. from (select node1 as node_id, 'card' as node_type
  65. from trans_filter_rel_edge
  66. union all
  67. select node2 as node_id, 'card' as node_type
  68. from trans_filter_rel_edge) as temp_node_id
  69. GROUP BY node_id, node_type;
  70. INSERT INTO final_rel_edge
  71. SELECT node1,
  72. node2,
  73. node1cn,
  74. node2cn,
  75. mc,
  76. clazz,
  77. num,
  78. fx,
  79. lx
  80. FROM trans_filter_rel_edge
  81. WHERE node1 IN (SELECT node_id FROM trans_core_nodes)
  82. AND node2 IN (SELECT node_id FROM trans_core_nodes);
  83. CREATE
  84. TEMP TABLE call_core_nodes AS
  85. SELECT *
  86. FROM temp_core_nodes;
  87. CREATE
  88. TEMP TABLE call_filter_all_rel_edge AS
  89. SELECT node1,
  90. node2,
  91. ANY_VALUE(node1cn) AS node1cn,
  92. ANY_VALUE(node2cn) AS node2cn,
  93. ANY_VALUE(mc) AS mc,
  94. ANY_VALUE(clazz) AS clazz,
  95. count() AS num,
  96. ANY_VALUE(sj) AS sj,
  97. ANY_VALUE(fx) AS fx,
  98. ANY_VALUE(lx) AS lx
  99. FROM rel_edge
  100. WHERE clazz = 'tel_tel'
  101. GROUP BY node1, node2;
  102. CREATE
  103. TEMP TABLE call_filter_rel_edge AS
  104. SELECT *
  105. FROM (SELECT *
  106. FROM call_filter_all_rel_edge
  107. WHERE clazz = 'tel_tel'
  108. AND fx = 1
  109. AND node1 IN (SELECT node_id FROM call_core_nodes)
  110. AND node2 NOT IN (SELECT node_id FROM call_core_nodes)
  111. UNION ALL
  112. SELECT *
  113. FROM call_filter_all_rel_edge
  114. WHERE clazz = 'tel_tel'
  115. AND fx = 2
  116. AND node1 NOT IN (SELECT node_id FROM call_core_nodes)
  117. AND node2 IN (SELECT node_id FROM call_core_nodes)) AS combined_edges
  118. ;
  119. INSERT INTO call_core_nodes
  120. select node_id, node_type
  121. from (select node1 as node_id, 'tel' as node_type
  122. from call_filter_rel_edge
  123. union all
  124. select node2 as node_id, 'tel' as node_type
  125. from call_filter_rel_edge) as temp_node_id
  126. GROUP BY node_id, node_type;
  127. INSERT INTO final_rel_edge
  128. SELECT node1,
  129. node2,
  130. node1cn,
  131. node2cn,
  132. mc,
  133. clazz,
  134. num,
  135. fx,
  136. lx
  137. FROM call_filter_rel_edge
  138. WHERE node1 IN (SELECT node_id FROM call_core_nodes)
  139. AND node2 IN (SELECT node_id FROM call_core_nodes);
  140. CREATE
  141. TEMP TABLE other_core_nodes AS
  142. SELECT *
  143. FROM temp_core_nodes;
  144. CREATE
  145. TEMP TABLE other_filter_all_rel_edge AS
  146. SELECT *
  147. FROM rel_edge
  148. WHERE clazz NOT IN ('card_card', 'tel_tel');
  149. CREATE
  150. TEMP TABLE other_filter_rel_edge AS
  151. SELECT *
  152. FROM other_filter_all_rel_edge
  153. WHERE clazz NOT IN ('card_card', 'tel_tel')
  154. AND node1 IN (SELECT node_id FROM trans_core_nodes)
  155. AND node2 IN (SELECT node_id FROM trans_core_nodes);
  156. INSERT INTO other_core_nodes
  157. SELECT node_id, node_type
  158. FROM (SELECT node1 as node_id, 'other' as node_type
  159. FROM other_filter_rel_edge
  160. UNION ALL
  161. SELECT node2 as node_id, 'other' as node_type
  162. FROM other_filter_rel_edge) as temp_node_id
  163. GROUP BY node_id, node_type;
  164. INSERT INTO final_rel_edge
  165. SELECT node1,
  166. node2,
  167. node1cn,
  168. node2cn,
  169. mc,
  170. clazz,
  171. num,
  172. fx,
  173. lx
  174. FROM other_filter_rel_edge
  175. WHERE clazz not in ('card_card', 'tel_tel')
  176. AND node1 IN (SELECT node_id FROM other_core_nodes)
  177. AND node2 IN (SELECT node_id FROM other_core_nodes);
  178. SELECT node1,
  179. node2,
  180. any_value(node1cn) AS node1cn,
  181. any_value(node2cn) AS node2cn,
  182. any_value(mc) AS mc,
  183. clazz,
  184. sum(num) AS num,
  185. any_value(fx) AS fx,
  186. any_value(lx) AS lx
  187. FROM final_rel_edge
  188. group by node1, node2, clazz;