2014-05-18 3 views
0

J'ai une table pour la société est ici la structure:comment trouver la somme du groupe et trouver le poids dans mysql?

+------------+--------------+-----------+--------+-----------------------------+ 
| ticker  | total_shares | institute | public | sector      | 
+------------+--------------+-----------+--------+-----------------------------+ 
| 1JANATAMF | 200000000 |  30.00 | 45.00 | Mutual Funds    | 
| 8THICB  |  5000000 |  0.00 | 0.00 | Mutual Funds    | 
| AAMRATECH |  55369395 |  28.00 | 42.00 | IT Sector     | 
| ABB1STMF | 162615643 |  46.44 | 33.56 | Mutual Funds    | 
| ABBANK  | 532459152 |  54.86 | 30.01 | Bank      | 
| ACI  |  28661768 |  37.73 | 28.23 | Pharmaceuticals & Chemicals | 
| ACIFORMULA |  45000000 |  22.77 | 11.21 | Pharmaceuticals & Chemicals | 
| ACIZCBOND |  267170 |  60.00 | 40.00 | Corporate Bond    | 
| ACTIVEFINE |  69000000 |  20.80 | 64.42 | Pharmaceuticals & Chemicals | 
| AFCAGRO |  50000000 |  48.11 | 21.60 | Pharmaceuticals & Chemicals | 
| AFTABAUTO |  95732422 |  47.49 | 22.01 | Engineering     | 
| AGNISYSL |  51798982 |  16.33 | 70.92 | IT Sector     | 
| AGRANINS |  24157650 |  18.30 | 43.05 | Insurance     | 
| AIBL1STIMF | 100000000 |  76.31 | 13.69 | Mutual Funds    | 
| AIMS1STMF |  41450000 |  0.00 | 0.00 | Mutual Funds    | 
| AL-HAJTEX |  12691843 |  4.19 | 71.76 | Textile      | 
| ALARABANK | 946958501 |  10.07 | 46.88 | Bank      | 
+------------+--------------+-----------+--------+-----------------------------+ 

Une autre table pour le prix:

+------------+--------+--------+------------+ 
| ticker  | open | high | price_date | 
+------------+--------+--------+------------+ 
| AAMRATECH | 29.80 | 30.20 | 2014-05-04 | 
| ABBANK  | 27.50 | 27.50 | 2014-05-04 | 
| ACI  | 235.00 | 244.50 | 2014-05-04 | 
| ACIFORMULA | 86.00 | 87.60 | 2014-05-04 | 
| ACTIVEFINE | 69.00 | 70.00 | 2014-05-04 | 
| BANGAS  | 509.50 | 509.50 | 2014-05-04 | 
| BANKASIA | 18.00 | 18.40 | 2014-05-04 | 
+------------+--------+--------+------------+ 

des données cours a été court-circuité dans un but. maintenant je voulais trouver le prix pondéré de l'ouverture. la formule de ceci est

A = open*((total_share*(institue/100)+(total_share*(public/100)) 

la somme de A par secteur comme somme tout le ticker appartient aux fonds mutuels. puis diviser le ticker individuel par exemple 1JANATAMF/somme des fonds communs de placement pour trouver le poids.

Je l'ai utilisé cette requête:

select c.ticker, 
p.open*(c.total_shares*(c.institute/100)+c.total_shares*(c.public/100)) as cap 
from company as c 
left join price as p 
on p.ticker =c.ticker 
where p.price_date = '2014-05-04'; 

mais ne peut pas trouver un moyen d'obtenir la somme par secteur et trouver le poids.

Edit:
sortie sera comme
téléscripteur, A/(somme de A avec groupées par secteur) où, A est la valeur formulé selon ticker

sortie volonté être comme:

+------------+--------------+--------------+ 
| ticker  | sum(a)  | weight  | 
+------------+--------------+--------------+ 
| 1JANATAMF | 5700000000 | 150078540 | 
+0

Votre calcul de poids est légèrement confus comment un ticker i.e (1JANATAMF) valeur de chaîne peut être divisible par la valeur numérique comme la somme de secteur, pouvez-vous effacer? –

+0

vous avez mal compris le résultat numérique que je reçois de ma question ci-dessus ou par A. par exemple 1JANATAMF A dire 50 et son appartenir à fonds communs de placement il y a beaucoup d'autres entreprises dans le secteur des fonds communs de placement comme 1JANATAMF, je veux somme de tous alors le poids est calculé de cette manière A/somme de ce secteur. –

+0

S'il vous plaît modifier votre question et fournir les résultats que vous voulez pour les données fournies. –

Répondre

0

Brisez votre requête dans certaines vues, voir si c'était ce que vous avez dans SQLFiddle http://sqlfiddle.com/#!2/7b4cb/4/2

+0

Salut merci beaucoup pour votre aide, je suis presque là, mais coincé à la dernière étape pouvez-vous me dire comment peut avoir la somme du poids de chaque secteurs? par exemple à partir de votre résultat, j'ai besoin (0.452644163162 + 0.133979939858 + 0.413375896979) additionné et montre le nom du secteur pas besoin de ticker car j'ai besoin du poids cumulé de chaque secteur. et puis-je multiplier le poids avec ouvert de la table de prix? comme ça? sélectionnez lc.sector, p.open * (cap/sum_cap) comme ouvert de list_cap rejoindre list_sum_cap lc sci sur lsc.sector = lc.sector joindre prix que p sur lc.ticker = p.ticker; merci –

+0

une autre question est si je crée la vue où p.price_date = '2014-05-04' et que vous avez besoin de changer la date ai-je besoin de créer vue à chaque fois? –