Advertisement
Guest User

Untitled

a guest
Apr 25th, 2015
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.67 KB | None | 0 0
  1. -- 通过地理位置过滤出特定高校的学生
  2. -- 查询20140301前的地理信息数据,请将log.mobile_data_location替换为log.mobile_data_location_oldtb
  3. -- v0.1北京大学20131101上报的终端
  4. SELECT DISTINCT
  5. uuid
  6. FROM
  7. log.mobile_data_location
  8. WHERE
  9. dt = '20131101'
  10. AND marslat > 39.98714 AND marslat < 39.996889
  11. AND marslng > 116.304849 AND marslng < 116.315235
  12.  
  13. -- 测试
  14. SELECT
  15. *
  16. FROM
  17. (SELECT
  18. uuid,
  19. (case
  20. when marslat > 39.98714 AND marslat < 39.996889 AND marslng > 116.304849 AND marslng < 116.315235
  21. then 'PKU'
  22. when acos(sin(marslat*pi/180)*sin(40.001137*pi/180) + cos(marslat*pi/180)*cos(40.001137*pi/180)*cos((marslng-116.327741)*pi/180)) * 6371004 <= 300
  23. then 'THU'
  24. else 'NULL'
  25. end
  26. ) univ
  27. FROM
  28. log.mobile_data_location
  29. WHERE
  30. dt >= '20131101' AND dt <= '20131107'
  31. ) mdl
  32. WHERE
  33. mdl.univ != 'NULL'
  34.  
  35. -- 找出出现在指定高校区域的设备及其在一周内的出现天数
  36. SELECT
  37. mdl.uuid,
  38. mdl.univ,
  39. count(*) aprtimes
  40. FROM
  41. (SELECT distinct
  42. uuid,
  43. (case
  44. when marslat > 39.98714 AND marslat < 39.996889 AND marslng > 116.304849 AND marslng < 116.315235
  45. then 'PKU'
  46. when marslat > 30.259491 AND marslat < 30.26898 AND marslng > 120.122359 AND marslng < 120.124891
  47. then 'ZJU'
  48. when marslat > 30.632197 AND marslat < 30.633397 AND marslng > 104.078482 AND marslng < 104.083031
  49. then 'SCU'
  50. when acos(sin(marslat*pi()/180)*sin(40.001137*pi()/180) + cos(marslat*pi()/180)*cos(40.001137*pi()/180)*cos((marslng-116.327741)*pi()/180)) * 6371004 <= 300
  51. then 'THU'
  52. when acos(sin(marslat*pi()/180)*sin(30.541111*pi()/180) + cos(marslat*pi()/180)*cos(30.541111*pi()/180)*cos((marslng-114.361922)*pi()/180)) * 6371004 <= 300
  53. then 'WHU'
  54. when acos(sin(marslat*pi()/180)*sin(31.297978*pi()/180) + cos(marslat*pi()/180)*cos(31.297978*pi()/180)*cos((marslng-121.500632)*pi()/180)) * 6371004 <= 300
  55. then 'FDU'
  56. when acos(sin(marslat*pi()/180)*sin(24.438973*pi()/180) + cos(marslat*pi()/180)*cos(24.438973*pi()/180)*cos((marslng-118.097788)*pi()/180)) * 6371004 <= 300
  57. then 'XMU'
  58. else 'NULL'
  59. end
  60. ) univ,
  61. dt
  62. FROM
  63. log.mobile_data_location
  64. WHERE
  65. dt >= '20131101' AND dt <= '20131107'
  66. ) mdl
  67. WHERE
  68. mdl.univ != 'NULL'
  69. group by
  70. mdl.univ, mdl.uuid
  71.  
  72. -- 选出学生群体的uuid和userid
  73. SELECT
  74. uub.userid,
  75. uub.uuid,
  76. t.univ
  77. FROM
  78. (
  79. SELECT
  80. mdl.uuid,
  81. mdl.univ,
  82. count(*) aprtimes
  83. FROM
  84. (SELECT distinct
  85. uuid,
  86. (case
  87. -- 选学校模块
  88.  
  89. else 'NULL'
  90. end
  91. ) univ,
  92. dt
  93. FROM
  94. log.mobile_data_location
  95. WHERE
  96. dt >= '20131101' AND dt <= '20131107'
  97. ) mdl
  98. WHERE
  99. mdl.univ != 'NULL'
  100. group by
  101. mdl.univ, mdl.uuid
  102. ) t
  103. join
  104. (
  105. SELECT
  106. userid,
  107. uuid
  108. FROM
  109. mart_mobile.user_uuid_base
  110. ) uub
  111. on
  112. t.aprtimes >= 2 AND t.uuid = uub.uuid
  113.  
  114. -- 找出指定高校学生的userid,根据userid与微博用户信息进行交叉验证
  115. SELECT
  116. loc_stu.userid,
  117. loc_stu.uuid,
  118. weibo.university,
  119. weibo.occupation
  120. FROM
  121. (
  122. SELECT
  123. uub.userid,
  124. uub.uuid,
  125. t.univ
  126. FROM
  127. (
  128. SELECT
  129. mdl.uuid,
  130. mdl.univ,
  131. count(*) aprtimes
  132. FROM
  133. (SELECT distinct
  134. uuid,
  135. (case
  136. -- 选学校模块
  137.  
  138. else 'NULL'
  139. end
  140. ) univ,
  141. dt
  142. FROM
  143. log.mobile_data_location
  144. WHERE
  145. dt >= '20131101' AND dt <= '20131107'
  146. ) mdl
  147. WHERE
  148. mdl.univ != 'NULL'
  149. group by
  150. mdl.univ, mdl.uuid
  151. ) t
  152. join
  153. (
  154. SELECT
  155. userid,
  156. uuid
  157. FROM
  158. mart_mobile.user_uuid_base
  159. ) uub
  160. ON
  161. t.aprtimes >= 2 AND t.uuid = uub.uuid
  162. ) loc_stu
  163. join
  164. (
  165. SELECT
  166. userid,
  167. university,
  168. occupation
  169. FROM
  170. ba_ups.user_weibo_profile
  171. ) weibo
  172. ON
  173. loc_stu.userid = weibo.userid
  174.  
  175. -- 选学校模块
  176. -- 武汉
  177. when acos(sin(marslat*pi()/180)*sin(30.541111*pi()/180) + cos(marslat*pi()/180)*cos(30.541111*pi()/180)*cos((marslng-114.361922)*pi()/180)) * 6371004 <= 300
  178. then 'WHU'
  179. when acos(sin(marslat*pi()/180)*sin(30.512776*pi()/180) + cos(marslat*pi()/180)*cos(30.512776*pi()/180)*cos((marslng-114.412261)*pi()/180)) * 6371004 <= 300
  180. then 'HUST'
  181. when acos(sin(marslat*pi()/180)*sin(30.521316*pi()/180) + cos(marslat*pi()/180)*cos(30.521316*pi()/180)*cos((marslng-114.354712)*pi()/180)) * 6371004 <= 400
  182. then 'WUT&CCNU'
  183. -- 上海
  184. when acos(sin(marslat*pi()/180)*sin(31.297978*pi()/180) + cos(marslat*pi()/180)*cos(31.297978*pi()/180)*cos((marslng-121.500632)*pi()/180)) * 6371004 <= 200
  185. then 'FDU'
  186. when acos(sin(marslat*pi()/180)*sin(31.142988*pi()/180) + cos(marslat*pi()/180)*cos(31.142988*pi()/180)*cos((marslng-121.42198)*pi()/180)) * 6371004 <= 200
  187. then 'ECUST'
  188. when acos(sin(marslat*pi()/180)*sin(31.199559*pi()/180) + cos(marslat*pi()/180)*cos(31.199559*pi()/180)*cos((marslng-121.433598)*pi()/180)) * 6371004 <= 200
  189. then 'SJTU'
  190. when acos(sin(marslat*pi()/180)*sin(31.317144*pi()/180) + cos(marslat*pi()/180)*cos(31.317144*pi()/180)*cos((marslng-121.39364)*pi()/180)) * 6371004 <= 200
  191. then 'SHU'
  192. -- 北京
  193. when marslat > 39.98714 AND marslat < 39.996889 AND marslng > 116.304849 AND marslng < 116.315235
  194. then 'PKU'
  195. when acos(sin(marslat*pi()/180)*sin(40.001137*pi()/180) + cos(marslat*pi()/180)*cos(40.001137*pi()/180)*cos((marslng-116.327741)*pi()/180)) * 6371004 <= 300
  196. then 'THU'
  197. when marslat > 39.958988 AND marslat < 39.964679 AND marslng > 116.355296 AND marslng < 116.370403
  198. then 'BNU&BUPT'
  199. when marslat > 39.954317 AND marslat < 39.962064 AND marslng > 116.309806 AND marslng < 116.316737
  200. then 'BIT&BFSU'
  201. when acos(sin(marslat*pi()/180)*sin(39.951257*pi()/180) + cos(marslat*pi()/180)*cos(39.951257*pi()/180)*cos((marslng-116.320599)*pi()/180)) * 6371004 <= 200
  202. then 'CUN'
  203. when acos(sin(marslat*pi()/180)*sin(39.959482*pi()/180) + cos(marslat*pi()/180)*cos(39.959482*pi()/180)*cos((marslng-116.342121)*pi()/180)) * 6371004 <= 150
  204. then 'CUFE'
  205. when acos(sin(marslat*pi()/180)*sin(39.966241*pi()/180) + cos(marslat*pi()/180)*cos(39.966241*pi()/180)*cos((marslng-116.351391)*pi()/180)) * 6371004 <= 150
  206. then 'CPUL'
  207. when acos(sin(marslat*pi()/180)*sin(39.954383*pi()/180) + cos(marslat*pi()/180)*cos(39.954383*pi()/180)*cos((marslng-116.345426)*pi()/180)) * 6371004 <= 150
  208. then 'BJTU'
  209. -- 西安
  210. when marslat > 34.242006 AND marslat < 34.250733 AND marslng > 108.979887 AND marslng < 108.987311
  211. then 'XJTU'
  212. when marslat > 34.264513 AND marslat < 34.266481 AND marslng > 108.995851 AND marslng < 109.00216
  213. then 'NPU'
  214. when acos(sin(marslat*pi()/180)*sin(34.231075*pi()/180) + cos(marslat*pi()/180)*cos(34.231075*pi()/180)*cos((marslng-108.916599)*pi()/180)) * 6371004 <= 150
  215. then 'XDU'
  216. when marslat > 34.150533 AND marslat < 34.157369 AND marslng > 108.88631 AND marslng < 108.896416
  217. then 'SXNU'
  218. when marslat > 34.24644 AND marslat < 34.250325 AND marslng > 108.923839 AND marslng < 108.931478
  219. then 'NPU'
  220. -- 广州大学城
  221. when acos(sin(marslat*pi()/180)*sin(23.04573*pi()/180) + cos(marslat*pi()/180)*cos(23.04573*pi()/180)*cos((marslng-113.38181)*pi()/180)) * 6371004 <= 1000
  222. then 'GZUNIV'
  223. when acos(sin(marslat*pi()/180)*sin(23.064289*pi()/180) + cos(marslat*pi()/180)*cos(23.064289*pi()/180)*cos((marslng-113.395028)*pi()/180)) * 6371004 <= 1000
  224. then 'GZUNIV'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement