Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.73 KB | None | 0 0
  1. SELECT SQL_NO_CACHE SUM(time_bonus + size_bonus + downloads_bonus) AS bonus_sum
  2. FROM (
  3. SELECT user_id, TIMESTAMPDIFF(MONTH, date, NOW()) AS time_bonus,
  4.  
  5. CASE
  6. WHEN size/1073741824 <= 1 THEN 0
  7. WHEN size/1073741824 > 1 AND size/1073741824 <= 5 THEN 2
  8. WHEN size/1073741824 > 5 AND size/1073741824 <= 10 THEN 3
  9. WHEN size/1073741824 > 10 THEN 4
  10. END AS size_bonus,
  11.  
  12. CASE
  13. WHEN downloads <= 10 THEN 0.1
  14. WHEN downloads > 10 THEN 0.2
  15. END AS seeders_bonus
  16.  
  17. FROM (
  18. SELECT a.user_id, p.post_id, p.date, p.size, p.downloads FROM authored a
  19. LEFT JOIN posts p ON p.post_id = a.post_id
  20. AND a.author = 1
  21. ) AS FIRST
  22. ) AS SECOND
  23. GROUP BY user_id
  24.  
  25. SELECT bonus_sum
  26. FROM (
  27. SELECT SQL_NO_CACHE SUM(time_bonus + size_bonus + downloads_bonus) AS bonus_sum
  28. FROM (
  29. SELECT user_id, TIMESTAMPDIFF(MONTH, date, NOW()) AS time_bonus,
  30.  
  31. CASE
  32. WHEN size/1073741824 <= 1 THEN 0
  33. WHEN size/1073741824 > 1 AND size/1073741824 <= 5 THEN 2
  34. WHEN size/1073741824 > 5 AND size/1073741824 <= 10 THEN 3
  35. WHEN size/1073741824 > 10 THEN 4
  36. END AS size_bonus,
  37.  
  38. CASE
  39. WHEN downloads <= 10 THEN 0.1
  40. WHEN downloads > 10 THEN 0.2
  41. END AS seeders_bonus
  42.  
  43. FROM (
  44. SELECT a.user_id, p.post_id, p.date, p.size, p.downloads FROM authored a
  45. LEFT JOIN posts p ON p.post_id = a.post_id
  46. AND a.author = 1
  47. ) AS FIRST
  48. ) AS SECOND
  49. GROUP BY user_id
  50. ) AS THIRD
  51.  
  52. UPDATE `users` u
  53. SET
  54. `bonus_daily` = ( (
  55. SELECT SUM(time_bonus + size_bonus + downloads_bonus) AS bonus_sum
  56. FROM (
  57. SELECT user_id, TIMESTAMPDIFF(MONTH, date, NOW()) AS time_bonus,
  58.  
  59. CASE
  60. WHEN size/1073741824 <= 1 THEN 0
  61. WHEN size/1073741824 > 1 AND size/1073741824 <= 5 THEN 2
  62. WHEN size/1073741824 > 5 AND size/1073741824 <= 10 THEN 3
  63. WHEN size/1073741824 > 10 THEN 4
  64. END AS size_bonus,
  65.  
  66. CASE
  67. WHEN downloads <= 10 THEN 0.1
  68. WHEN downloads > 10 THEN 0.2
  69. END AS seeders_bonus
  70.  
  71. FROM (
  72. SELECT a.user_id, p.post_id, p.date, p.size, p.downloads FROM authored a
  73. LEFT JOIN posts p ON p.post_id = a.post_id
  74. AND a.author = 1
  75. ) AS FIRST
  76. ) AS SECOND
  77. WHERE user_id = u.user_id
  78. GROUP BY user_id
  79. )
  80. * 1048576 # megabytes from bonus_sum to bytes
  81. );
  82.  
  83. UPDATE `users` u
  84. SET
  85. `bonus_daily` = ( (
  86. SELECT bonus_sum
  87. FROM (
  88. SELECT SUM(time_bonus + size_bonus + downloads_bonus) AS bonus_sum
  89. FROM (
  90. SELECT user_id, TIMESTAMPDIFF(MONTH, date, NOW()) AS time_bonus,
  91.  
  92. CASE
  93. WHEN size/1073741824 <= 1 THEN 0
  94. WHEN size/1073741824 > 1 AND size/1073741824 <= 5 THEN 2
  95. WHEN size/1073741824 > 5 AND size/1073741824 <= 10 THEN 3
  96. WHEN size/1073741824 > 10 THEN 4
  97. END AS size_bonus,
  98.  
  99. CASE
  100. WHEN downloads <= 10 THEN 0.1
  101. WHEN downloads > 10 THEN 0.2
  102. END AS seeders_bonus
  103.  
  104. FROM (
  105. SELECT a.user_id, p.post_id, p.date, p.size, p.downloads FROM authored a
  106. LEFT JOIN posts p ON p.post_id = a.post_id
  107. AND a.author = 1
  108. ) AS FIRST
  109. ) AS SECOND
  110. GROUP BY user_id
  111. ) AS THIRD
  112. WHERE user_id = u.user_id
  113. )
  114. * 1048576 # megabytes from bonus_sum to bytes
  115. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement