获取用户游戏记录.sql 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. SELECT
  2. id, if(serverIndex=0, '中国区', '海外区') as srvID, nickname,
  3. if(gender = 2, '女', '男') as gender,
  4. phone, birthday,
  5. integral, coin, diamond, mac,
  6. country, state, city,
  7. if (offlineTime > 0, FROM_UNIXTIME(offlineTime / 1000, '%Y-%m-%d %H:%i'), '') as offlineTime,
  8. CEIL(totalGameDuration / 60) 'totalGameDuration', totalGameCount,
  9. date,
  10. CEIL(dateGameDuration / 60) 'dateGameDuration', dateGameCount,
  11. CEIL(game1_duration / 60) 'game1_duration', game1_count,
  12. CEIL(game2_duration / 60) 'game2_duration', game2_count,
  13. CEIL(game3_duration / 60) 'game3_duration', game3_count,
  14. time, gameType, CEIL(duration / 60) 'duration'
  15. FROM
  16. (
  17. (
  18. (
  19. (SELECT id as id0, serverIndex FROM user_login) table0
  20. JOIN user_info #表1-用户信息
  21. on id0 = id
  22. )
  23. LEFT JOIN
  24. (
  25. SELECT userID, sum(duration) as totalGameDuration, count(*) as totalGameCount
  26. FROM user_game_record
  27. GROUP BY userID
  28. ) total_game_record #表2-用户总游戏记录
  29. ON user_info.id = total_game_record.userID
  30. )
  31. LEFT JOIN
  32. (
  33. SELECT
  34. userID,
  35. date_format(dateTime, '%Y-%m-%d') as date,
  36. sum(duration) as dateGameDuration, count(*) as dateGameCount,
  37. sum(if(gameType in (1), duration, 0)) as game1_duration,
  38. count(if(gameType in (1), TRUE, null)) as game1_count,
  39. sum(if(gameType in (3,4,5), duration, 0)) as game2_duration,
  40. count(if(gameType in (3,4,5), TRUE, null)) as game2_count,
  41. sum(if(gameType in (2,6,7,8,9,10,11,12), duration, 0)) as game3_duration,
  42. count(if(gameType in (2,6,7,8,9,10,11,12), TRUE, null)) as game3_count
  43. FROM user_game_record
  44. GROUP BY userID, date_format(dateTime, '%Y-%m-%d')
  45. ) date_game_record #表3-用户某日游戏记录
  46. ON user_info.id = date_game_record.userID
  47. )
  48. LEFT JOIN
  49. (
  50. SELECT userID, date_format(dateTime, '%Y-%m-%d') as date0, date_format(dateTime, '%H:%i') as time, gameType, duration
  51. FROM user_game_record
  52. ) time_game_record #表4-用户某日时间游戏记录
  53. ON date_game_record.userID = time_game_record.userID AND date_game_record.date = time_game_record.date0
  54. ORDER BY totalGameDuration DESC, id, date DESC, time