Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT SQL_NO_CACHE SUM(time_bonus + size_bonus + downloads_bonus) AS bonus_sum
- FROM (
- SELECT user_id, TIMESTAMPDIFF(MONTH, date, NOW()) AS time_bonus,
- CASE
- WHEN size/1073741824 <= 1 THEN 0
- WHEN size/1073741824 > 1 AND size/1073741824 <= 5 THEN 2
- WHEN size/1073741824 > 5 AND size/1073741824 <= 10 THEN 3
- WHEN size/1073741824 > 10 THEN 4
- END AS size_bonus,
- CASE
- WHEN downloads <= 10 THEN 0.1
- WHEN downloads > 10 THEN 0.2
- END AS seeders_bonus
- FROM (
- SELECT a.user_id, p.post_id, p.date, p.size, p.downloads FROM authored a
- LEFT JOIN posts p ON p.post_id = a.post_id
- AND a.author = 1
- ) AS FIRST
- ) AS SECOND
- GROUP BY user_id
- SELECT bonus_sum
- FROM (
- SELECT SQL_NO_CACHE SUM(time_bonus + size_bonus + downloads_bonus) AS bonus_sum
- FROM (
- SELECT user_id, TIMESTAMPDIFF(MONTH, date, NOW()) AS time_bonus,
- CASE
- WHEN size/1073741824 <= 1 THEN 0
- WHEN size/1073741824 > 1 AND size/1073741824 <= 5 THEN 2
- WHEN size/1073741824 > 5 AND size/1073741824 <= 10 THEN 3
- WHEN size/1073741824 > 10 THEN 4
- END AS size_bonus,
- CASE
- WHEN downloads <= 10 THEN 0.1
- WHEN downloads > 10 THEN 0.2
- END AS seeders_bonus
- FROM (
- SELECT a.user_id, p.post_id, p.date, p.size, p.downloads FROM authored a
- LEFT JOIN posts p ON p.post_id = a.post_id
- AND a.author = 1
- ) AS FIRST
- ) AS SECOND
- GROUP BY user_id
- ) AS THIRD
- UPDATE `users` u
- SET
- `bonus_daily` = ( (
- SELECT SUM(time_bonus + size_bonus + downloads_bonus) AS bonus_sum
- FROM (
- SELECT user_id, TIMESTAMPDIFF(MONTH, date, NOW()) AS time_bonus,
- CASE
- WHEN size/1073741824 <= 1 THEN 0
- WHEN size/1073741824 > 1 AND size/1073741824 <= 5 THEN 2
- WHEN size/1073741824 > 5 AND size/1073741824 <= 10 THEN 3
- WHEN size/1073741824 > 10 THEN 4
- END AS size_bonus,
- CASE
- WHEN downloads <= 10 THEN 0.1
- WHEN downloads > 10 THEN 0.2
- END AS seeders_bonus
- FROM (
- SELECT a.user_id, p.post_id, p.date, p.size, p.downloads FROM authored a
- LEFT JOIN posts p ON p.post_id = a.post_id
- AND a.author = 1
- ) AS FIRST
- ) AS SECOND
- WHERE user_id = u.user_id
- GROUP BY user_id
- )
- * 1048576 # megabytes from bonus_sum to bytes
- );
- UPDATE `users` u
- SET
- `bonus_daily` = ( (
- SELECT bonus_sum
- FROM (
- SELECT SUM(time_bonus + size_bonus + downloads_bonus) AS bonus_sum
- FROM (
- SELECT user_id, TIMESTAMPDIFF(MONTH, date, NOW()) AS time_bonus,
- CASE
- WHEN size/1073741824 <= 1 THEN 0
- WHEN size/1073741824 > 1 AND size/1073741824 <= 5 THEN 2
- WHEN size/1073741824 > 5 AND size/1073741824 <= 10 THEN 3
- WHEN size/1073741824 > 10 THEN 4
- END AS size_bonus,
- CASE
- WHEN downloads <= 10 THEN 0.1
- WHEN downloads > 10 THEN 0.2
- END AS seeders_bonus
- FROM (
- SELECT a.user_id, p.post_id, p.date, p.size, p.downloads FROM authored a
- LEFT JOIN posts p ON p.post_id = a.post_id
- AND a.author = 1
- ) AS FIRST
- ) AS SECOND
- GROUP BY user_id
- ) AS THIRD
- WHERE user_id = u.user_id
- )
- * 1048576 # megabytes from bonus_sum to bytes
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement