1. 一、路由器部分
  2. //【饼图】统计路由器在线、离线数量
  3. SELECT COUNT(*) AS total,
  4. COUNT(CASE WHEN last_heartbeat_time >= UNIX_TIMESTAMP(DATE_ADD(NOW(), INTERVAL -30 MINUTE)) THEN 1 ELSE NULL END) AS livecount,
  5. COUNT(CASE WHEN last_heartbeat_time < UNIX_TIMESTAMP(DATE_ADD(NOW(), INTERVAL -30 MINUTE)) THEN 1 WHEN last_heartbeat_time IS NULL THEN 1 ELSE NULL END) AS diecount
  6. FROM wifi_routemap
  7.  
  8. 二、Portal Page页面统计部分
  9.  
  10. //【饼图】访问页面数量,以路由器进行排名
  11. SELECT `ap_mac`, COUNT(`ap_mac`) AS `total`
  12. FROM `wifi_status_page`
  13. GROUP BY `ap_mac`
  14. ORDER BY `total` DESC
  15.  
  16. //【饼图】访问页面数量,以用户进行排名
  17. SELECT `user_mac`, COUNT(`user_mac`) AS `total`
  18. FROM `wifi_status_page`
  19. GROUP BY `user_mac`
  20. ORDER BY `total` DESC
  21.  
  22. //【饼图】访问页面数量,以页面进行排名
  23. SELECT `page_url`, COUNT(`page_url`) AS `total`
  24. FROM `wifi_status_page`
  25. GROUP BY `page_url`
  26. ORDER BY `total` DESC
  27.  
  28. //【饼图】统计访问页面数量,以分辨率进行排名,
  29. // 实际数据为浏览器,而非屏幕的,取消
  30. SELECT CONCAT(`height`, "*", `width`) AS `resolution`, COUNT(CONCAT(`height`, "*", `width`)) AS `total`
  31. FROM `wifi_status_page`
  32. GROUP BY CONCAT(`height`, "*", `width`)
  33. ORDER BY `total` DESC
  34. LIMIT 0 , 30
  35.  
  36. //【饼图】查询手机操作系统类型(分Android、IOS、WP、BB、Symbian及其他),不包含在下面的,需要用php计算得出并放入other字段
  37. SELECT COUNT(id) AS total,
  38. COUNT(CASE WHEN user_agent LIKE "%android%" THEN 1 ELSE NULL END ) AS Android,
  39. COUNT(CASE WHEN user_agent LIKE "%iphone%" THEN 1 ELSE NULL END ) AS iOS,
  40. COUNT(CASE WHEN user_agent LIKE "%windows phone%" THEN 1 ELSE NULL END ) AS `Windows Phone`,
  41. COUNT(CASE WHEN user_agent LIKE "%blackberry%" THEN 1 ELSE NULL END ) AS BlackBerry,
  42. COUNT(CASE WHEN user_agent LIKE "%symbian%" THEN 1 ELSE NULL END ) AS Symbian
  43. FROM wifi_status_page
  44.  
  45. //【饼图】查询iPhone手机型号,不包含在下面的,需要用php计算得出并放入other字段
  46. SELECT COUNT(CASE WHEN user_agent LIKE "%iphone%" THEN 1 ELSE NULL END) AS total,
  47. COUNT(CASE WHEN user_agent LIKE "%iphone%" AND CONCAT(height,"*",width) = "480*320" THEN 1 ELSE NULL END ) AS `iPhone 3G/3GS`,
  48. COUNT(CASE WHEN user_agent LIKE "%iphone%" AND CONCAT(height,"*",width) = "960*640" THEN 1 ELSE NULL END ) AS `iPhone 4/4S`,
  49. COUNT(CASE WHEN user_agent LIKE "%iphone%" AND CONCAT(height,"*",width) = "1136*640" THEN 1 ELSE NULL END ) AS `iPhone 5/5C/5S`,
  50. COUNT(CASE WHEN user_agent LIKE "%iphone%" AND (CONCAT(height,"*",width) = "1334*750" OR CONCAT(height,"*",width) = "568*320") THEN 1 ELSE NULL END ) AS `iPhone 6/6S`,
  51. COUNT(CASE WHEN user_agent LIKE "%iphone%" AND CONCAT(height,"*",width) = "1920*1080" THEN 1 ELSE NULL END ) AS `iPhone 6/6S Plus`
  52. FROM wifi_status_page
  53.  
  54. //【饼图】查询浏览器类型,不包含在下面的,需要用php计算得出并放入other字段
  55. SELECT COUNT( id ) AS total,
  56. COUNT(CASE WHEN user_agent LIKE "%QQBrowser%" THEN 1 ELSE NULL END ) AS QQBrowser,
  57. COUNT(CASE WHEN user_agent LIKE "%MicroMessenger%" THEN 1 ELSE NULL END ) AS WeChat,
  58. COUNT(CASE WHEN user_agent LIKE "%UCBrowser%" OR user_agent LIKE "%UCWeb%" THEN 1 ELSE NULL END ) AS UC,
  59. COUNT(CASE WHEN user_agent LIKE "%Opera%" THEN 1 ELSE NULL END ) AS Opera,
  60. COUNT(CASE WHEN user_agent LIKE "%Sogou%" THEN 1 ELSE NULL END ) AS Sogou,
  61. COUNT(CASE WHEN user_agent LIKE "%Chrome%" THEN 1 ELSE NULL END ) AS Chrome,
  62. COUNT(CASE WHEN user_agent LIKE "%360SE%" OR user_agent LIKE "%360EE%" THEN 1 ELSE NULL END ) AS `360`,
  63. COUNT(CASE WHEN user_agent LIKE "%Maxthon%" THEN 1 ELSE NULL END ) AS Maxthon,
  64. COUNT(CASE WHEN user_agent LIKE "%IEMobile%" THEN 1 ELSE NULL END ) AS MSIE,
  65. COUNT(CASE WHEN user_agent LIKE "%dolphin%" THEN 1 ELSE NULL END ) AS dolphin,
  66. COUNT(CASE WHEN user_agent LIKE "%Oupeng%" THEN 1 ELSE NULL END ) AS Oupeng,
  67. COUNT(CASE WHEN user_agent LIKE "%LieBao%" AND user_agent not LIKE "%chrome%" THEN 1 ELSE NULL END ) AS LieBao,
  68. COUNT(CASE WHEN user_agent LIKE "%baidu%" AND user_agent not LIKE "%chrome%" THEN 1 ELSE NULL END ) AS Baidu,
  69. COUNT(CASE WHEN user_agent LIKE "%xiaomi%" AND user_agent not LIKE "%chrome%" THEN 1 ELSE NULL END ) AS XiaoMi,
  70. COUNT(CASE WHEN user_agent LIKE "%Firefox%" THEN 1 ELSE NULL END ) AS Firefox
  71. FROM wifi_status_page
  72.  
  73. //【饼图】查询手机厂商,不包含在下面的,需要用php计算得出并放入other字段,
  74. // 厂家数据太乱,ua也不全不完整,不做...........................................
  75. // SELECT COUNT( id ) AS total,
  76. // COUNT(CASE WHEN user_agent LIKE "%iphone%" THEN 1 ELSE NULL END ) AS Apple,
  77. // COUNT(CASE WHEN user_agent LIKE "%Huawei%" THEN 1 ELSE NULL END ) AS Huawei,
  78. // COUNT(CASE WHEN user_agent LIKE "%XiaoMi%" THEN 1 ELSE NULL END ) AS XiaoMi,
  79. // COUNT(CASE WHEN user_agent LIKE "%MeiZu%" THEN 1 ELSE NULL END ) AS MeiZu,
  80. // COUNT(CASE WHEN user_agent LIKE "%Samsung%" THEN 1 ELSE NULL END ) AS Samsung,
  81. // COUNT(CASE WHEN user_agent LIKE "%VIVO%" THEN 1 ELSE NULL END ) AS VIVO,
  82. // COUNT(CASE WHEN user_agent LIKE "%Nokia%" THEN 1 ELSE NULL END ) AS Nokia,
  83. // COUNT(CASE WHEN user_agent LIKE "%nubia%" THEN 1 ELSE NULL END ) AS nubia,
  84. // COUNT(CASE WHEN user_agent LIKE "%lenovo%" THEN 1 ELSE NULL END ) AS lenovo,
  85. // COUNT(CASE WHEN user_agent LIKE "%oppo%" THEN 1 ELSE NULL END ) AS oppo,
  86. // COUNT(CASE WHEN user_agent LIKE "%zte%" THEN 1 ELSE NULL END ) AS zte,
  87. // COUNT(CASE WHEN user_agent LIKE "%qiku%" THEN 1 ELSE NULL END ) AS qiku,
  88. // COUNT(CASE WHEN user_agent LIKE "%smart%" THEN 1 ELSE NULL END ) AS smartisam,
  89. // COUNT(CASE WHEN user_agent LIKE "%coolpad%" THEN 1 ELSE NULL END ) AS coolpad,
  90. // COUNT(CASE WHEN user_agent LIKE "%oneplus%" THEN 1 ELSE NULL END ) AS oneplus,
  91. // COUNT(CASE WHEN user_agent LIKE "%letv%" THEN 1 ELSE NULL END ) AS letv,
  92. // COUNT(CASE WHEN user_agent LIKE "%htc%" THEN 1 ELSE NULL END ) AS htc,
  93. // COUNT(CASE WHEN user_agent LIKE "%tcl%" THEN 1 ELSE NULL END ) AS tcl,
  94. // COUNT(CASE WHEN user_agent LIKE "%microsoft%" THEN 1 ELSE NULL END ) AS microsoft,
  95. // COUNT(CASE WHEN user_agent LIKE "%philips%" THEN 1 ELSE NULL END ) AS philips,
  96. // COUNT(CASE WHEN user_agent LIKE "%motorola%" THEN 1 ELSE NULL END ) AS motorola,
  97. // COUNT(CASE WHEN user_agent LIKE "%haier%" THEN 1 ELSE NULL END ) AS haier,
  98. // COUNT(CASE WHEN user_agent LIKE "%hisense%" THEN 1 ELSE NULL END ) AS hisense,
  99. // COUNT(CASE WHEN user_agent LIKE "%LG%" THEN 1 ELSE NULL END ) AS LG
  100. // FROM wifi_status_page
  101.  
  102. //【曲线图】今天分时统计(需要用php以当前小时为基点,控制首列小时的显示个数,但在曲线图中横坐标要写满24小时,未到的时间点以空白显示)
  103. //当前几点就减到第几条
  104. SELECT td AS showhour, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac
  105. FROM (
  106. SELECT DATE_FORMAT(now(),'%H:00') AS td
  107. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 HOUR),'%H:00')
  108. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -2 HOUR),'%H:00')
  109. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -3 HOUR),'%H:00')
  110. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -4 HOUR),'%H:00')
  111. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -5 HOUR),'%H:00')
  112. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -6 HOUR),'%H:00')
  113. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 HOUR),'%H:00')
  114. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -8 HOUR),'%H:00')
  115. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -9 HOUR),'%H:00')
  116. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -10 HOUR),'%H:00')
  117. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -11 HOUR),'%H:00')
  118. ORDER BY td
  119. )a
  120. LEFT JOIN (
  121. SELECT FROM_UNIXTIME(add_time, '%H:00') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac
  122. FROM wifi_status_page
  123. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') = CURDATE()
  124. GROUP BY add_data
  125. )b ON a.td = b.add_data
  126.  
  127. //【曲线图】昨天24小时分时统计,每小时统计数量,路由器数,手机数,以小时为序,
  128. SELECT td AS showhour, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac
  129. FROM (
  130. SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -1 HOUR),'%Y-%m-%d %H:00') as td
  131. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -2 HOUR),'%Y-%m-%d %H:00')
  132. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -3 HOUR),'%Y-%m-%d %H:00')
  133. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -4 HOUR),'%Y-%m-%d %H:00')
  134. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -5 HOUR),'%Y-%m-%d %H:00')
  135. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -6 HOUR),'%Y-%m-%d %H:00')
  136. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -7 HOUR),'%Y-%m-%d %H:00')
  137. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -8 HOUR),'%Y-%m-%d %H:00')
  138. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -9 HOUR),'%Y-%m-%d %H:00')
  139. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -10 HOUR),'%Y-%m-%d %H:00')
  140. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -11 HOUR),'%Y-%m-%d %H:00')
  141. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -12 HOUR),'%Y-%m-%d %H:00')
  142. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -13 HOUR),'%Y-%m-%d %H:00')
  143. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -14 HOUR),'%Y-%m-%d %H:00')
  144. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -15 HOUR),'%Y-%m-%d %H:00')
  145. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -16 HOUR),'%Y-%m-%d %H:00')
  146. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -17 HOUR),'%Y-%m-%d %H:00')
  147. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -18 HOUR),'%Y-%m-%d %H:00')
  148. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -19 HOUR),'%Y-%m-%d %H:00')
  149. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -20 HOUR),'%Y-%m-%d %H:00')
  150. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -21 HOUR),'%Y-%m-%d %H:00')
  151. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -22 HOUR),'%Y-%m-%d %H:00')
  152. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -23 HOUR),'%Y-%m-%d %H:00')
  153. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -24 HOUR),'%Y-%m-%d %H:00')
  154. ORDER BY td
  155. )a
  156. LEFT JOIN (
  157. SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d %H:00') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac
  158. FROM wifi_status_page
  159. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') = date_sub(CURDATE(), INTERVAL 1 DAY) AND ap_mac = 'bc14efab747d'
  160. GROUP BY add_data
  161. )b ON a.td = b.add_data
  162.  
  163. //【曲线图】最近7天页面访问量,每日统计数量,路由器数,手机数,以日期为序,
  164. SELECT td AS showdate, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac
  165. FROM (
  166. SELECT CURDATE( ) AS td
  167. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY)
  168. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -2 DAY)
  169. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -3 DAY)
  170. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -4 DAY)
  171. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -5 DAY)
  172. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -6 DAY)
  173. ORDER BY td
  174. )a
  175. LEFT JOIN (
  176. SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac
  177. FROM wifi_status_page
  178. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -6 DAY) AND CURDATE()
  179. GROUP BY add_data
  180. )b ON a.td = b.add_data
  181.  
  182. //【曲线图】最近30天页面访问量,每日统计数量,路由器数,手机数,以日期为序,
  183. SELECT td AS showdate, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac
  184. FROM (
  185. SELECT CURDATE( ) AS td
  186. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY)
  187. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -2 DAY)
  188. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -3 DAY)
  189. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -4 DAY)
  190. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -5 DAY)
  191. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -6 DAY)
  192. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -7 DAY)
  193. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -8 DAY)
  194. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -9 DAY)
  195. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -10 DAY)
  196. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -11 DAY)
  197. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -12 DAY)
  198. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -13 DAY)
  199. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -14 DAY)
  200. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -15 DAY)
  201. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -16 DAY)
  202. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -17 DAY)
  203. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -18 DAY)
  204. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -19 DAY)
  205. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -20 DAY)
  206. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -21 DAY)
  207. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -22 DAY)
  208. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -23 DAY)
  209. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -24 DAY)
  210. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -25 DAY)
  211. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -26 DAY)
  212. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -27 DAY)
  213. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -28 DAY)
  214. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -29 DAY)
  215. ORDER BY td
  216. )a
  217. LEFT JOIN (
  218. SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac
  219. FROM wifi_status_page
  220. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -29 DAY) AND CURDATE()
  221. GROUP BY add_data
  222. )b ON a.td = b.add_data
  223.  
  224. //【曲线图】指定开始结束日期,每日统计数量,路由器数,手机数,以日期为序,
  225. //开始 '2016-01-10' 结束 '2016-01-26'
  226. SELECT td AS showdate, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac
  227. FROM (
  228. SELECT '2016-01-10' AS td
  229. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 1 DAY)
  230. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 2 DAY)
  231. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 3 DAY)
  232. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 4 DAY)
  233. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 5 DAY)
  234. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 6 DAY)
  235. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 7 DAY)
  236. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 8 DAY)
  237. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 9 DAY)
  238. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 10 DAY)
  239. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 11 DAY)
  240. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 12 DAY)
  241. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 13 DAY)
  242. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 14 DAY)
  243. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 15 DAY)
  244. UNION all SELECT DATE_ADD('2016-01-10', INTERVAL 16 DAY)
  245. )a LEFT JOIN (
  246. SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac
  247. FROM wifi_status_page
  248. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN '2016-01-10' AND '2016-01-26'
  249. GROUP BY add_data
  250. )b ON a.td = b.add_data
  251.  
  252. //php实现
  253. $sdate="2016-01-10";
  254. $edate="2016-01-25";
  255.  
  256. $datetime1 = date_create($sdate);
  257. $datetime2 = date_create($edate);
  258. $leftday = intval(date_diff($datetime1, $datetime2)->format('%a'));
  259.  
  260. $sql="SELECT td AS showdate, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac FROM ( ";
  261. $sql.="SELECT '$sdate' as td ";
  262. for($i=1; $i <= $leftday;$i++){
  263. $sql.="UNION all SELECT DATE_ADD('$sdate', INTERVAL $i DAY) ";
  264. }
  265. $sql.=") a LEFT JOIN ( ";
  266. $sql.="SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac FROM wifi_status_page ";
  267. $sql.="WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') between '$sdate' and '$edate' GROUP BY add_data ";
  268. $sql.=") b on a.td=b.add_data";
  269.  
  270. echo $sql;
  271.  
  272. 三、微信连WiFi统计部分
  273.  
  274. //【饼图】微信连WiFi数量,以路由器进行排名
  275. SELECT `ap_mac`, COUNT(`ap_mac`) AS `total`
  276. FROM `wifi_status_wechat`
  277. GROUP BY `ap_mac`
  278. ORDER BY `total` DESC
  279.  
  280. //【饼图】微信连WiFi数量,以微信公众账号进行排名,右连接显示公众账号名称
  281. SELECT wifi_wxwifi.wxgzh, COUNT( wifi_wxwifi.wxgzh ) AS total
  282. FROM wifi_status_wechat
  283. LEFT JOIN wifi_wxwifi ON wifi_status_wechat.shopid = wifi_wxwifi.shopId
  284. GROUP BY wxgzh
  285. ORDER BY total DESC
  286.  
  287. //【曲线图】今天分时统计,到当前小时为止, 微信连WiFi量,每日总连接次数,路由器被连数量,公众账号被连数量,连接手机数量,连接OpenID数量
  288. SELECT td AS showhour, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac, COALESCE(totalappid, 0) AS totalappid, COALESCE(totalopenid, 0) AS totalopenid
  289. FROM (
  290. SELECT DATE_FORMAT(now(),'%H:00') AS td
  291. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 HOUR),'%H:00')
  292. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -2 HOUR),'%H:00')
  293. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -3 HOUR),'%H:00')
  294. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -4 HOUR),'%H:00')
  295. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -5 HOUR),'%H:00')
  296. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -6 HOUR),'%H:00')
  297. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 HOUR),'%H:00')
  298. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -8 HOUR),'%H:00')
  299. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -9 HOUR),'%H:00')
  300. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -10 HOUR),'%H:00')
  301. UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -11 HOUR),'%H:00')
  302. ORDER BY td
  303. )a
  304. LEFT JOIN (
  305. SELECT FROM_UNIXTIME(add_time, '%H:00') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac, COUNT(DISTINCT appid) AS totalappid, COUNT(DISTINCT openid) AS totalopenid
  306. FROM wifi_status_wechat
  307. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') = CURDATE()
  308. GROUP BY add_data
  309. )b ON a.td = b.add_data
  310.  
  311. //【曲线图】昨天24小时分时统计, 微信连WiFi量,每日总连接次数,路由器被连数量,公众账号被连数量,连接手机数量,连接OpenID数量
  312. SELECT td AS showdate, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac, COALESCE(totalappid, 0) AS totalappid, COALESCE(totalopenid, 0) AS totalopenid
  313. FROM (
  314. SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -1 HOUR),'%Y-%m-%d %H:00') as td
  315. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -2 HOUR),'%Y-%m-%d %H:00')
  316. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -3 HOUR),'%Y-%m-%d %H:00')
  317. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -4 HOUR),'%Y-%m-%d %H:00')
  318. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -5 HOUR),'%Y-%m-%d %H:00')
  319. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -6 HOUR),'%Y-%m-%d %H:00')
  320. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -7 HOUR),'%Y-%m-%d %H:00')
  321. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -8 HOUR),'%Y-%m-%d %H:00')
  322. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -9 HOUR),'%Y-%m-%d %H:00')
  323. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -10 HOUR),'%Y-%m-%d %H:00')
  324. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -11 HOUR),'%Y-%m-%d %H:00')
  325. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -12 HOUR),'%Y-%m-%d %H:00')
  326. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -13 HOUR),'%Y-%m-%d %H:00')
  327. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -14 HOUR),'%Y-%m-%d %H:00')
  328. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -15 HOUR),'%Y-%m-%d %H:00')
  329. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -16 HOUR),'%Y-%m-%d %H:00')
  330. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -17 HOUR),'%Y-%m-%d %H:00')
  331. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -18 HOUR),'%Y-%m-%d %H:00')
  332. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -19 HOUR),'%Y-%m-%d %H:00')
  333. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -20 HOUR),'%Y-%m-%d %H:00')
  334. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -21 HOUR),'%Y-%m-%d %H:00')
  335. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -22 HOUR),'%Y-%m-%d %H:00')
  336. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -23 HOUR),'%Y-%m-%d %H:00')
  337. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -24 HOUR),'%Y-%m-%d %H:00')
  338. ORDER BY td
  339. )a
  340. LEFT JOIN (
  341. SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d %H:00') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac, COUNT(DISTINCT appid) AS totalappid, COUNT(DISTINCT openid) AS totalopenid
  342. FROM wifi_status_wechat
  343. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
  344. GROUP BY add_data
  345. )b ON a.td = b.add_data
  346.  
  347. //【曲线图】最近7天微信连WiFi量,每日总连接次数,路由器被连数量,公众账号被连数量,连接手机数量,连接OpenID数量
  348. SELECT td AS showdate, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac, COALESCE(totalappid, 0) AS totalappid, COALESCE(totalopenid, 0) AS totalopenid
  349. FROM (
  350. SELECT CURDATE( ) AS td
  351. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY)
  352. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -2 DAY)
  353. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -3 DAY)
  354. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -4 DAY)
  355. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -5 DAY)
  356. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -6 DAY)
  357. ORDER BY td
  358. )a
  359. LEFT JOIN (
  360. SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac, COUNT(DISTINCT appid) AS totalappid, COUNT(DISTINCT openid) AS totalopenid
  361. FROM wifi_status_wechat
  362. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -6 DAY) AND CURDATE()
  363. GROUP BY add_data
  364. )b ON a.td = b.add_data
  365.  
  366. //【曲线图】最近30天微信连WiFi量,每日总连接次数,路由器被连数量,公众账号被连数量,连接手机数量,连接OpenID数量
  367. SELECT td AS showdate, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac, COALESCE(totalappid, 0) AS totalappid, COALESCE(totalopenid, 0) AS totalopenid
  368. FROM (
  369. SELECT CURDATE( ) AS td
  370. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY)
  371. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -2 DAY)
  372. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -3 DAY)
  373. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -4 DAY)
  374. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -5 DAY)
  375. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -6 DAY)
  376. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -7 DAY)
  377. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -8 DAY)
  378. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -9 DAY)
  379. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -10 DAY)
  380. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -11 DAY)
  381. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -12 DAY)
  382. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -13 DAY)
  383. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -14 DAY)
  384. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -15 DAY)
  385. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -16 DAY)
  386. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -17 DAY)
  387. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -18 DAY)
  388. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -19 DAY)
  389. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -20 DAY)
  390. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -21 DAY)
  391. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -22 DAY)
  392. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -23 DAY)
  393. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -24 DAY)
  394. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -25 DAY)
  395. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -26 DAY)
  396. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -27 DAY)
  397. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -28 DAY)
  398. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -29 DAY)
  399. ORDER BY td
  400. )a
  401. LEFT JOIN (
  402. SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac, COUNT(DISTINCT appid) AS totalappid, COUNT(DISTINCT openid) AS totalopenid
  403. FROM wifi_status_wechat
  404. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -29 DAY) AND CURDATE()
  405. GROUP BY add_data
  406. )b ON a.td = b.add_data
  407.  
  408. 四、视频点播统计
  409. //【饼图】视频点播数量,以路由器进行排名
  410. SELECT `ap_mac`, COUNT(`ap_mac`) AS `total`
  411. FROM `wifi_status_video`
  412. GROUP BY `ap_mac`
  413. ORDER BY `total` DESC
  414.  
  415. //【饼图】视频点播数量,以点播次数进行排名,右连接视频名称
  416. SELECT wifi_videolist.id, wifi_videolist.name, COUNT( wifi_videolist.name ) AS total
  417. FROM wifi_status_video
  418. LEFT JOIN wifi_videolist ON wifi_status_video.videoid = wifi_videolist.id
  419. GROUP BY name
  420. ORDER BY total DESC
  421.  
  422. //【曲线图】最近24小时视频点播量,每日总连接次数,路由器被点数量,手机点播数量
  423.  
  424. //【曲线图】昨天24小时视频点播量,每日总连接次数,路由器被点数量,手机点播数量
  425. SELECT td AS showdate, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac
  426. FROM (
  427. SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -1 HOUR),'%Y-%m-%d %H:00') as td
  428. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -2 HOUR),'%Y-%m-%d %H:00')
  429. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -3 HOUR),'%Y-%m-%d %H:00')
  430. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -4 HOUR),'%Y-%m-%d %H:00')
  431. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -5 HOUR),'%Y-%m-%d %H:00')
  432. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -6 HOUR),'%Y-%m-%d %H:00')
  433. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -7 HOUR),'%Y-%m-%d %H:00')
  434. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -8 HOUR),'%Y-%m-%d %H:00')
  435. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -9 HOUR),'%Y-%m-%d %H:00')
  436. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -10 HOUR),'%Y-%m-%d %H:00')
  437. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -11 HOUR),'%Y-%m-%d %H:00')
  438. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -12 HOUR),'%Y-%m-%d %H:00')
  439. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -13 HOUR),'%Y-%m-%d %H:00')
  440. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -14 HOUR),'%Y-%m-%d %H:00')
  441. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -15 HOUR),'%Y-%m-%d %H:00')
  442. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -16 HOUR),'%Y-%m-%d %H:00')
  443. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -17 HOUR),'%Y-%m-%d %H:00')
  444. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -18 HOUR),'%Y-%m-%d %H:00')
  445. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -19 HOUR),'%Y-%m-%d %H:00')
  446. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -20 HOUR),'%Y-%m-%d %H:00')
  447. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -21 HOUR),'%Y-%m-%d %H:00')
  448. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -22 HOUR),'%Y-%m-%d %H:00')
  449. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -23 HOUR),'%Y-%m-%d %H:00')
  450. UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -24 HOUR),'%Y-%m-%d %H:00')
  451. ORDER BY td
  452. )a
  453. LEFT JOIN (
  454. SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d %H:00') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac
  455. FROM wifi_status_video
  456. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
  457. GROUP BY add_data
  458. )b ON a.td = b.add_data
  459.  
  460. //【曲线图】最近7天视频点播量,每日总连接次数,路由器被点数量,手机点播数量
  461.  
  462. //【曲线图】最近30天视频点播量,每日总连接次数,路由器被点数量,手机点播数量
  463. SELECT td AS showdate, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac, COALESCE(totalusermac, 0) AS totalusermac
  464. FROM (
  465. SELECT CURDATE( ) AS td
  466. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY)
  467. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -2 DAY)
  468. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -3 DAY)
  469. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -4 DAY)
  470. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -5 DAY)
  471. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -6 DAY)
  472. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -7 DAY)
  473. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -8 DAY)
  474. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -9 DAY)
  475. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -10 DAY)
  476. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -11 DAY)
  477. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -12 DAY)
  478. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -13 DAY)
  479. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -14 DAY)
  480. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -15 DAY)
  481. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -16 DAY)
  482. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -17 DAY)
  483. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -18 DAY)
  484. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -19 DAY)
  485. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -20 DAY)
  486. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -21 DAY)
  487. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -22 DAY)
  488. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -23 DAY)
  489. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -24 DAY)
  490. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -25 DAY)
  491. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -26 DAY)
  492. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -27 DAY)
  493. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -28 DAY)
  494. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -29 DAY)
  495. ORDER BY td
  496. )a
  497. LEFT JOIN (
  498. SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') add_data, COUNT(id) AS totalcount, COUNT(DISTINCT ap_mac) AS totalapmac, COUNT(DISTINCT user_mac) AS totalusermac
  499. FROM wifi_status_video
  500. WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -29 DAY) AND CURDATE()
  501. GROUP BY add_data
  502. )b ON a.td = b.add_data
  503.  
  504. 五、APP统计
  505. //【饼图】APP点播数量,以路由器进行排名
  506. SELECT `ap_mac`, COUNT(`ap_mac`) AS `total`
  507. FROM `wifi_status_app`
  508. GROUP BY `ap_mac`
  509. ORDER BY `total` DESC
  510.  
  511. //【饼图】APP下载数量,以下载次数进行排名,右连接APP名称
  512. SELECT wifi_applist.appId, wifi_applist.appName, COUNT( wifi_applist.appName ) AS total
  513. FROM wifi_status_app
  514. LEFT JOIN wifi_applist ON wifi_status_app.appid = wifi_applist.appId
  515. GROUP BY appName
  516. ORDER BY total DESC
  517.  
  518. //【曲线图】最近N小时APP下载量,每日总连接次数,路由器被点数量,手机下载数量
  519.  
  520. //【曲线图】昨天24小时APP下载量,每日总连接次数,路由器被点数量,手机点播数量
  521.  
  522. //【曲线图】最近7天APP下载量,每日总连接次数,路由器被点数量,手机点播数量
  523.  
  524. //【曲线图】最近30天APP下载量,每日总连接次数,路由器被点数量,手机点播数量
  525.  
  526. 六、探针
  527. //【柱状图】 24小时内 用户MAC 停留小时长度及用户个数,横坐标:小时长度(1-24); 纵坐标:时间长度(1-24)
  528. // step 1
  529. // //【条状图】 所有apmac的人流量排名,
  530. // SELECT `apmac`, SUM(LENGTH(clients) - LENGTH(REPLACE(clients,',',''))) AS totalcount
  531. // FROM `wifi_probe_status`
  532. // GROUP BY `apmac`
  533. // ORDER BY `totalcount` DESC
  534.  
  535. // step 2
  536. // 1). 获取昨天24小时内所有mac列表,再使用php去重
  537. // SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d %H') add_data , clients
  538. // FROM wifi_probe_status
  539. // WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND `apmac` = 'bc14efab747d'
  540. // ORDER BY add_data
  541.  
  542. // SELECT apmac, GROUP_CONCAT(clients)
  543. // FROM wifi_probe_status
  544. // WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND `apmac` = 'bc14efab747d'
  545.  
  546. // 2). 获取每个mac在昨天内停留的小时长度
  547. // SELECT MAX(FROM_UNIXTIME(add_time, '%H')) AS max, MIN(FROM_UNIXTIME(add_time, '%H')) AS min, (max - min) as interval
  548. // FROM wifi_probe_status
  549. // WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND clients LIKE "%e82aeadc1950%"
  550.  
  551. // 3). 根据所有mac停留时间长度,算出分布图
  552.  
  553. 【曲线图】昨日各小时附近用户总数,指定路由器
  554. SELECT ap_mac as apmac, COUNT(id) AS total,
  555. COUNT(CASE WHEN h00_time <> '' THEN 1 ELSE NULL END) AS `00`,
  556. COUNT(CASE WHEN h01_time <> '' THEN 1 ELSE NULL END) AS `01`,
  557. COUNT(CASE WHEN h02_time <> '' THEN 1 ELSE NULL END) AS `02`,
  558. COUNT(CASE WHEN h03_time <> '' THEN 1 ELSE NULL END) AS `03`,
  559. COUNT(CASE WHEN h04_time <> '' THEN 1 ELSE NULL END) AS `04`,
  560. COUNT(CASE WHEN h05_time <> '' THEN 1 ELSE NULL END) AS `05`,
  561. COUNT(CASE WHEN h06_time <> '' THEN 1 ELSE NULL END) AS `06`,
  562. COUNT(CASE WHEN h07_time <> '' THEN 1 ELSE NULL END) AS `07`,
  563. COUNT(CASE WHEN h08_time <> '' THEN 1 ELSE NULL END) AS `08`,
  564. COUNT(CASE WHEN h09_time <> '' THEN 1 ELSE NULL END) AS `09`,
  565. COUNT(CASE WHEN h10_time <> '' THEN 1 ELSE NULL END) AS `10`,
  566. COUNT(CASE WHEN h11_time <> '' THEN 1 ELSE NULL END) AS `11`,
  567. COUNT(CASE WHEN h12_time <> '' THEN 1 ELSE NULL END) AS `12`,
  568. COUNT(CASE WHEN h13_time <> '' THEN 1 ELSE NULL END) AS `13`,
  569. COUNT(CASE WHEN h14_time <> '' THEN 1 ELSE NULL END) AS `14`,
  570. COUNT(CASE WHEN h15_time <> '' THEN 1 ELSE NULL END) AS `15`,
  571. COUNT(CASE WHEN h16_time <> '' THEN 1 ELSE NULL END) AS `16`,
  572. COUNT(CASE WHEN h17_time <> '' THEN 1 ELSE NULL END) AS `17`,
  573. COUNT(CASE WHEN h18_time <> '' THEN 1 ELSE NULL END) AS `18`,
  574. COUNT(CASE WHEN h19_time <> '' THEN 1 ELSE NULL END) AS `19`,
  575. COUNT(CASE WHEN h20_time <> '' THEN 1 ELSE NULL END) AS `20`,
  576. COUNT(CASE WHEN h21_time <> '' THEN 1 ELSE NULL END) AS `21`,
  577. COUNT(CASE WHEN h22_time <> '' THEN 1 ELSE NULL END) AS `22`,
  578. COUNT(CASE WHEN h23_time <> '' THEN 1 ELSE NULL END) AS `23`
  579. FROM wifi_status_probe
  580. WHERE ap_user_date LIKE "%20160126%" AND `ap_mac` = 'bc14efab747d'
  581. GROUP BY `apmac`
  582. ORDER BY `total` DESC
  583.  
  584. // SELECT td AS showhour, COALESCE(totalcount, 0) AS totalcount, COALESCE(totalapmac, 0) AS totalapmac
  585. // FROM (
  586. // SELECT DATE_FORMAT(now(),'%Y-%m-%d %H:00') AS td
  587. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 HOUR),'%Y-%m-%d %H:00')
  588. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -2 HOUR),'%Y-%m-%d %H:00')
  589. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -3 HOUR),'%Y-%m-%d %H:00')
  590. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -4 HOUR),'%Y-%m-%d %H:00')
  591. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -5 HOUR),'%Y-%m-%d %H:00')
  592. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -6 HOUR),'%Y-%m-%d %H:00')
  593. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -7 HOUR),'%Y-%m-%d %H:00')
  594. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -8 HOUR),'%Y-%m-%d %H:00')
  595. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -9 HOUR),'%Y-%m-%d %H:00')
  596. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -10 HOUR),'%Y-%m-%d %H:00')
  597. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -11 HOUR),'%Y-%m-%d %H:00')
  598. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -12 HOUR),'%Y-%m-%d %H:00')
  599. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -13 HOUR),'%Y-%m-%d %H:00')
  600. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -14 HOUR),'%Y-%m-%d %H:00')
  601. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -15 HOUR),'%Y-%m-%d %H:00')
  602. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -16 HOUR),'%Y-%m-%d %H:00')
  603. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -17 HOUR),'%Y-%m-%d %H:00')
  604. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -18 HOUR),'%Y-%m-%d %H:00')
  605. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -19 HOUR),'%Y-%m-%d %H:00')
  606. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -20 HOUR),'%Y-%m-%d %H:00')
  607. // ORDER BY td
  608. // )a
  609. // LEFT JOIN (
  610. // SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d %H:00') add_data, SUM(LENGTH(clients) - LENGTH(REPLACE(clients,',',''))) AS totalcount, COUNT(DISTINCT apmac) AS totalapmac
  611. // FROM wifi_probe_status
  612. // WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') = CURDATE()
  613. // GROUP BY add_data
  614. // )b ON a.td = b.add_data
  615.  
  616. //【曲线图】昨天24小时附近用户总数,不同路由器附近数量
  617. // SELECT td AS showdate, COALESCE(totalcount, 0) AS totalcount
  618. // FROM (
  619. // SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -1 HOUR),'%Y-%m-%d %H:00') as td
  620. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -2 HOUR),'%Y-%m-%d %H:00')
  621. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -3 HOUR),'%Y-%m-%d %H:00')
  622. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -4 HOUR),'%Y-%m-%d %H:00')
  623. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -5 HOUR),'%Y-%m-%d %H:00')
  624. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -6 HOUR),'%Y-%m-%d %H:00')
  625. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -7 HOUR),'%Y-%m-%d %H:00')
  626. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -8 HOUR),'%Y-%m-%d %H:00')
  627. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -9 HOUR),'%Y-%m-%d %H:00')
  628. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -10 HOUR),'%Y-%m-%d %H:00')
  629. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -11 HOUR),'%Y-%m-%d %H:00')
  630. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -12 HOUR),'%Y-%m-%d %H:00')
  631. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -13 HOUR),'%Y-%m-%d %H:00')
  632. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -14 HOUR),'%Y-%m-%d %H:00')
  633. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -15 HOUR),'%Y-%m-%d %H:00')
  634. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -16 HOUR),'%Y-%m-%d %H:00')
  635. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -17 HOUR),'%Y-%m-%d %H:00')
  636. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -18 HOUR),'%Y-%m-%d %H:00')
  637. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -19 HOUR),'%Y-%m-%d %H:00')
  638. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -20 HOUR),'%Y-%m-%d %H:00')
  639. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -21 HOUR),'%Y-%m-%d %H:00')
  640. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -22 HOUR),'%Y-%m-%d %H:00')
  641. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -23 HOUR),'%Y-%m-%d %H:00')
  642. // UNION ALL SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -24 HOUR),'%Y-%m-%d %H:00')
  643. // ORDER BY td
  644. // )a
  645. // LEFT JOIN (
  646. // SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d %H:00') add_data, SUM(LENGTH(clients) - LENGTH(REPLACE(clients,',',''))) AS totalcount
  647. // FROM wifi_probe_status
  648. // WHERE FROM_UNIXTIME(add_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND `apmac` = 'bc14efab747d'
  649. // GROUP BY add_data
  650. // )b ON a.td = b.add_data
  651.  
  652. 【柱状图】用户访问次数分布图,每个mac的访问次数
  653. SELECT td AS showvisit, COALESCE(totalcount, 0) AS totalcount
  654. FROM (
  655. SELECT 1 AS td
  656. UNION ALL SELECT 2
  657. UNION ALL SELECT 3
  658. UNION ALL SELECT 4
  659. UNION ALL SELECT 5
  660. UNION ALL SELECT 6
  661. UNION ALL SELECT 7
  662. UNION ALL SELECT 8
  663. UNION ALL SELECT 9
  664. UNION ALL SELECT 10
  665. UNION ALL SELECT 11
  666. UNION ALL SELECT 12
  667. UNION ALL SELECT 13
  668. UNION ALL SELECT 14
  669. UNION ALL SELECT 15
  670. UNION ALL SELECT 16
  671. UNION ALL SELECT 17
  672. UNION ALL SELECT 18
  673. UNION ALL SELECT 19
  674. UNION ALL SELECT 20
  675. UNION ALL SELECT 21
  676. UNION ALL SELECT 22
  677. UNION ALL SELECT 23
  678. UNION ALL SELECT 24
  679. ORDER BY td
  680. )a
  681. LEFT JOIN (
  682. SELECT times, COUNT(times) AS totalcount
  683. FROM (
  684. SELECT id, user_mac, ROUND(LENGTH(CONCAT_WS('', h00_time,h01_time,h02_time,h03_time,h04_time,h05_time,h06_time,h07_time,h08_time,h09_time,h10_time,h11_time,h12_time,h13_time,h14_time,h15_time,h16_time,h17_time,h18_time,h19_time,h20_time,h21_time,h22_time,h23_time))/10) as times
  685. FROM wifi_status_probe
  686. WHERE ap_user_date LIKE "%20160128%" AND `ap_mac` = 'bc14efab7486'
  687. ORDER BY times DESC
  688. ) b
  689. GROUP BY times
  690. )b ON a.td = b.times
  691.  
  692. 【柱状图】用户访问次数分布图,每个mac的访问次数
  693. SELECT td AS showvisit, COALESCE(totalcount, 0) AS totalcount
  694. FROM (
  695. SELECT 1 AS td
  696. UNION ALL SELECT 2
  697. UNION ALL SELECT 3
  698. UNION ALL SELECT 4
  699. UNION ALL SELECT 5
  700. UNION ALL SELECT 6
  701. UNION ALL SELECT 7
  702. UNION ALL SELECT 8
  703. UNION ALL SELECT 9
  704. UNION ALL SELECT 10
  705. UNION ALL SELECT 11
  706. UNION ALL SELECT 12
  707. UNION ALL SELECT 13
  708. UNION ALL SELECT 14
  709. UNION ALL SELECT 15
  710. UNION ALL SELECT 16
  711. UNION ALL SELECT 17
  712. UNION ALL SELECT 18
  713. UNION ALL SELECT 19
  714. UNION ALL SELECT 20
  715. UNION ALL SELECT 21
  716. UNION ALL SELECT 22
  717. UNION ALL SELECT 23
  718. UNION ALL SELECT 24
  719. ORDER BY td
  720. )a
  721. LEFT JOIN (
  722. SELECT times, COUNT(times) AS totalcount
  723. FROM (
  724. SELECT id, user_mac, ROUND(LENGTH(CONCAT_WS('', h00_time,h01_time,h02_time,h03_time,h04_time,h05_time,h06_time,h07_time,h08_time,h09_time,h10_time,h11_time,h12_time,h13_time,h14_time,h15_time,h16_time,h17_time,h18_time,h19_time,h20_time,h21_time,h22_time,h23_time))/10) AS times
  725. FROM wifi_status_probe
  726. WHERE ap_user_date LIKE "%20160222%" AND `ap_mac` = 'bc14efab7486'
  727. ORDER BY times DESC
  728. ) b
  729. GROUP BY times
  730. )b ON a.td = b.times
  731.  
  732. //【曲线图】最近30天指定ap MAC每天的user mac数量分布
  733. SELECT td AS showdate, COALESCE(totalusermac, 0) AS totalusermac
  734. FROM (
  735. SELECT CURDATE( ) AS td
  736. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY)
  737. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -2 DAY)
  738. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -3 DAY)
  739. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -4 DAY)
  740. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -5 DAY)
  741. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -6 DAY)
  742. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -7 DAY)
  743. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -8 DAY)
  744. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -9 DAY)
  745. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -10 DAY)
  746. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -11 DAY)
  747. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -12 DAY)
  748. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -13 DAY)
  749. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -14 DAY)
  750. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -15 DAY)
  751. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -16 DAY)
  752. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -17 DAY)
  753. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -18 DAY)
  754. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -19 DAY)
  755. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -20 DAY)
  756. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -21 DAY)
  757. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -22 DAY)
  758. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -23 DAY)
  759. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -24 DAY)
  760. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -25 DAY)
  761. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -26 DAY)
  762. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -27 DAY)
  763. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -28 DAY)
  764. UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL -29 DAY)
  765. ORDER BY td
  766. )a
  767. LEFT JOIN (
  768. SELECT STR_TO_DATE(RIGHT(ap_user_date, 8), '%Y%m%d') add_data, COUNT(DISTINCT user_mac) AS totalusermac
  769. FROM wifi_status_probe
  770. WHERE STR_TO_DATE(RIGHT(ap_user_date, 8), '%Y%m%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -29 DAY) AND CURDATE() AND `ap_mac` = 'bc14efab7486'
  771. GROUP BY add_data
  772. )b ON a.td = b.add_data
  773.  
  774. 【柱状图】指定ap mac时,用户30天内到到访天数分布
  775. SELECT td AS showvisit, COALESCE(totalcount, 0) AS totalcount
  776. FROM (
  777. SELECT 1 AS td
  778. UNION ALL SELECT 2
  779. UNION ALL SELECT 3
  780. UNION ALL SELECT 4
  781. UNION ALL SELECT 5
  782. UNION ALL SELECT 6
  783. UNION ALL SELECT 7
  784. UNION ALL SELECT 8
  785. UNION ALL SELECT 9
  786. UNION ALL SELECT 10
  787. UNION ALL SELECT 11
  788. UNION ALL SELECT 12
  789. UNION ALL SELECT 13
  790. UNION ALL SELECT 14
  791. UNION ALL SELECT 15
  792. UNION ALL SELECT 16
  793. UNION ALL SELECT 17
  794. UNION ALL SELECT 18
  795. UNION ALL SELECT 19
  796. UNION ALL SELECT 20
  797. UNION ALL SELECT 21
  798. UNION ALL SELECT 22
  799. UNION ALL SELECT 23
  800. UNION ALL SELECT 24
  801. UNION ALL SELECT 25
  802. UNION ALL SELECT 26
  803. UNION ALL SELECT 27
  804. UNION ALL SELECT 28
  805. UNION ALL SELECT 29
  806. UNION ALL SELECT 30
  807. ORDER BY td
  808. )a
  809. LEFT JOIN (
  810. SELECT times, COUNT(times) AS totalcount
  811. FROM (
  812. SELECT `user_mac`, count(`user_mac`) as times
  813. FROM wifi_status_probe
  814. WHERE STR_TO_DATE(RIGHT(ap_user_date, 8), '%Y%m%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -29 DAY) AND CURDATE() AND `ap_mac` = 'bc14efab7486'
  815. GROUP BY user_mac
  816. ) b
  817. GROUP BY times
  818. )b ON a.td = b.times
  819.  
  820. //15天内所有记录 , 每个user mac的访问次数
  821. SELECT `user_mac`, count(`user_mac`) as times
  822. FROM wifi_status_probe
  823. WHERE STR_TO_DATE(RIGHT(ap_user_date, 8), '%Y%m%d') BETWEEN DATE_ADD(CURDATE(), INTERVAL -29 DAY) AND CURDATE() AND `ap_mac` = 'bc14efab7486'
  824. GROUP BY user_mac

路由器数据统计SQL脚本的更多相关文章

  1. 常用的数据统计Sql 总结

    最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与使用. 所以,分享几个数据统计时常用的sql 语句总结: 1. 统计各个条件下的数据 select Batc ...

  2. 常用的数据统计Sql 总结(转)

    转:http://www.cnblogs.com/zhangweizhong/p/5577842.html 最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与 ...

  3. SQL Server 2008导出数据为SQL脚本的操作步骤

    以前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...

  4. SQL Server里面如何导出包含数据的SQL脚本

    通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没 ...

  5. 使用Sqlserver 2012 导出表数据为SQL脚本

    目录 前言 具体步骤 前言 很多时候,我们需要把数控库中的表的数据导出成SQL脚本的情形.然后,在别的库执行的情况. 以下,总结使用Sqlserver 2012数据库中表数据导出成SQL脚本的步骤. ...

  6. 读取excel数据生成sql脚本

    package com.interact.util; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.b ...

  7. SQLServer2008导出表数据为SQL脚本

    SQLServer2008的导出脚本方法: 数据库名-->右键 任务-->生存脚本 之后弹出SQLServer脚本生成向导 选择数据库 把编写数据可脚本这一项改为true,默认是false ...

  8. MySQL查询本周、上周、本月、上个月份数据的sql脚本

    2018-11-13 查询今天的数据 select * from 表名 where to_days(时间字段名) = to_days(now()); 查询昨天的数据 SELECT * FROM 表名 ...

  9. SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程) 分类: 数据库

    CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS ) ) ) declare @xtype tinyint declare @name ...

随机推荐

  1. BZOJ3779重组病毒LCT

    题目描述 黑客们通过对已有的病毒反编译,将许多不同的病毒重组,并重新编译出了新型的重组病毒.这种病毒的繁殖和变异能力极强.为了阻止这种病毒传播,某安全机构策划了一次实验,来研究这种病毒.实验在一个封闭 ...

  2. php 写斐波那契数列

    <?php $arr = []; for($i=1;$i<9;$i++){ if($i==1 || $i ==2){ $arr[$i-1] = 1; }else{ $arr[$i-1] = ...

  3. Gym - 100989E

    Islam is usually in a hurry. He often types his passwords incorrectly. He hates retyping his passwor ...

  4. golang go语言通道类型的通道示例 通道的通道

    几点注意:go的无缓存通道 通道make 创建后,即使里面是空的,也可以取里面内容.但是程序会被阻塞. 通道的规则是没人取,是不能往里面放的.放的线程会阻塞. 最外层的requestChan相当于一个 ...

  5. 前端JS Excel解析导入

    本文转载自:https://www.cnblogs.com/yinqingvip/p/6743213.html 需要用到js-xlsx:下载地址:js-xlsx <!DOCTYPE html&g ...

  6. TYVJ1266 费解的开关

    恩,这题...... 看看题面想到了啥?炮兵阵地! 再仔细一思考:炮兵阵地是求放置最多,而这个显然可以递推得出. 由于每个格子至多点一次,那么我们发现: 在第一行点击状态确定的情况下,后面每个格子的点 ...

  7. poj2689 Prime Distance

    题意:求[a, b]之间差最大/小的相邻素数. 0 < a, b < 2^32, 0 < b - a <= 1e6 首先发现a,b很大,以至于无法求出素数来. 然后就考虑退而求 ...

  8. Django(十一)请求生命周期之响应内容(请求/响应 头/体)

    https://www.cnblogs.com/renpingsheng/p/7534897.html Django请求生命周期之响应内容 http提交数据的方式有"post",& ...

  9. Nginx概述及安装配置

    1.概述 Nginx是一款开源的,高性能的Http和反向代理服务器,同时也是一个IMAP.POP3.SMTP代理服务器:Nginx可以作为一个HTTP服务器进行网站的发布处理,也可以作为反向代理进行负 ...

  10. 关于xshell 无法连接虚拟机之我的解决方案

    先说一下我碰到的问题 1,虚拟机配置网络后,并且选的模式是桥接模式,虚拟机中可以访问外网,宿主机中也可以访问外网,虚拟机中可以ping通宿主机,但是宿主机无法ping通虚拟机 解决: 我的原因:我会出 ...