2013-09-24 3 views
1

Je suis nouveau avec PostgreSQL. Je voudrais effectuer une opération de rangée sur ma table. Par exemple, considérons cette sortie de table:PostgreSQL: Besoin d'effectuer une opération de ligne

Record | Accesories | Used 
Joy  | Laptop  |  500 
Joy  | Android |  270 
Stuart | Laptop  |  300 
Stuart | Android |  25 

Je voudrais afficher le nom de « Record » pour lequel l'utilisation Android est jusqu'à 10% de Laptop.IN ce cas sa joie qui utilise un appareil Android jusqu'à 10% d'ordinateur portable. Calcul mathématique que nous avons fait: (270/500)*100=54%. Je veux que la même opération soit faite dans ma table. La table a plus de 1lac tel enregistrement. Quelqu'un peut-il m'aider pour la recherche de la même chose. Merci

+0

lire sur les jointures - http://www.w3schools.com/sql/sql_join.asp. Lorsque vous avez terminé, lisez des informations sur les index et sur la manière de rendre vos jointures plus rapides. Après cela, vous écrirez facilement cette requête –

+0

Merci pour la réponse. Mais même en apprenant des joins je ne comprends pas beaucoup d'idée là-dessus. J'ai essayé de rejoindre moi aussi. Je n'ai qu'une seule table dans ma base de données à partir de laquelle j'ai besoin d'aller chercher le résultat. – user2811262

Répondre

1
select 
    T1.Record 
from Table1 as T1 
    inner join Table1 as T2 on T2.Record = T1.Record 
where 
    T1.Accesories = 'Android' and T2.Accesories = 'Laptop' and 
    (T1.Used::float/T2.Used * 100)::int > 10 

En fait, ce qui est fait ici - nous obtenons toutes les lignes de Table1Accesories = 'Android' puis pour chaque enregistrement nous en essayant de trouver des documents où enregistrement = enregistrement de la ligne choisie et Accesories = 'Laptop' (notez que si Record, Accesories est la clé pas unique pour votre table, vous pourriez vous retrouver avec des lignes en double). Après cela, tout ce dont vous avez besoin c'est juste de calculer la valeur et de filtrer les lignes qui ne satisfont pas la condition (en ajoutant ceci à la clause where).

sql fiddle demo

+0

Merci cela a fonctionné. – user2811262

+0

@ user2811262 au moins essayer de comprendre pourquoi cela a fonctionné –

+1

"Essayez de comprendre", lorsqu'il est dit à propos d'un tas de code avec pas un mot d'explication, n'est pas très utile. :) –

Questions connexes