2017-02-03 5 views
-3

La question ci-dessous MySQL renvoie uniquement les 10 premières lignes. Comment puis-je les limiter à 10% de tous?Comment limiter les résultats de la requête par un pourcentage du nombre total de résultats dans MySQL?

SELECT page, 
     poso, 
     diff 
FROM (SELECT page, 
       Count(*) AS poso, 
       (Sum(Date(timestamp) = Curdate()) - Sum( 
       Date(timestamp) = Date_sub(Curdate(), 
            INTERVAL 1 day))) 
         diff 
     FROM `behaviour` 
     WHERE Date(timestamp) >= Date_sub(Curdate(), INTERVAL 1 day) 
     GROUP BY page 
     ORDER BY (Sum(Date(timestamp) = Curdate()) - Sum( 
        Date(timestamp) = Date_sub(Curdate(), 
           INTERVAL 1 day)) 
       ) DESC 
     LIMIT 10) AS u 
ORDER BY diff DESC 
+6

double possible de [MySQL: LIMIT par un pourcentage du montant des dossiers] (http://stackoverflow.com/questions/5615172/mysql-limite par-un pourcentage de la quantité-de-records-) –

Répondre

-1

Adapté de the answer to the duplicate question:

SELECT page, 
     poso, 
     diff 
FROM (
    SELECT *, 
      @counter := @counter + 1 AS counter 
    FROM (select @counter:=0) AS initvar, 
      (SELECT page, 
        Count(*) AS poso, 
        (Sum(Date(timestamp) = Curdate()) - Sum( 
        Date(timestamp) = Date_sub(Curdate(), 
             INTERVAL 1 day))) 
          diff 
      FROM `behaviour` 
      WHERE Date(timestamp) >= Date_sub(Curdate(), INTERVAL 1 day) 
      GROUP BY page 
      ORDER BY (Sum(Date(timestamp) = Curdate()) - Sum( 
         Date(timestamp) = Date_sub(Curdate(), 
            INTERVAL 1 day)) 
        ) DESC) AS u 
) AS v 
WHERE counter <= 10/100 * @counter 
ORDER BY diff DESC; 

Demo ici: http://rextester.com/JKMBZR62923

+1

Merci! J'ai accepté votre réponse et je l'attribuerai dans 14 heures – EnexoOnoma