Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment est-il préférable de joindre quelques tables (y compris des sous-requêtes) dans une seule requête ?

Je pense que cela vous donne ce que vous cherchez (de plusieurs façons) :

SELECT t.diapason, COUNT(*) AS 'number_of_users'
FROM (SELECT CASE  
    when amount<100 then '0-100' 
    when amount>=100 then '100 +' END AS diapason
    FROM 
        (SELECT SUM(amount) AS amount 
        FROM payments 
        INNER JOIN (SELECT DISTINCT user_id FROM activity where login_time between '2012-04-05' and '2012-04-12') AS a ON payments.user_id = a.user_id
        GROUP BY payments.user_id) AS P
      ) t
GROUP BY t.diapason
  ORDER BY number_of_users desc
;