私は MySQL の初心者で、やろうとしていることについて助けが必要です。私は 3 つのテーブルを持ってeod-stock
いcompany
ますshare_percentage
。company
テーブルには、証券取引所によって割り当てられたコードを持つ、証券取引所に上場している会社のすべてのデータが含まれています。eod_stock
には、1 日の毎分のトランザクションのデータがあり、同じ company_code フィールドもあります。share_percentage
株式数などのデータがあります。私がしたいことは、以下の手順で要約されています。
ステップ 1 : テーブルの company_code フィールドをeod_stock
テーブルの code フィールドと一致させcompany
ます。フィールドの値は同じです (会社に割り当てられたコードネーム)。
ステップ 2 : フィールドに従って並べ替えますsector_id
。このフィールドはcompany
テーブルにあります。セクターにはすべて固有の異なる ID があり、その下に企業があります (カテゴリー-サブカテゴリーのようなものです。セクター ID はカテゴリーであり、特定のセクターに属する企業はその下に入ります)。
ステップ 3 : ステップ 2 の会社をlast_trade_price
(eod_stock
表の) フィールドとdatetime
(最後)に従って並べ替えます
ステップ 4share_percentage
: company_code フィールドごとにテーブルの no_of_shares を持つ会社を照合します
ステップ 5step3
:乗算 step4
ステップ 6 : ステップ 5 の合計 (セクター別の企業の合計。たとえば、すべての銀行の合計)
ステップ7step 5
:除算step 6
ステップ 8 : セクターごとのステップ 7 の合計 (例: すべての銀行) = 結果
私の説明が十分に詳細であることを願っています.これを機能させることはできません. どんな助けでも大歓迎です。前もって感謝します!
テーブルのサンプルと私が欲しいもの:
TABLE company:
code: "google", "HSBC", "yahoo", "SCB"
sector_id: "1" ,"2", "1", "2"
TABLE eod_stock:
company_code : "google", "HSBC", "yahoo", "SCB"
ltp: "110", "115.2", "122.4", 105"
datetime: "1/1/2014 11:00", "1/1/2014 11:00", "1/1/2014 11:00", "1/1/2014 11:00"
company_code : "google", "HSBC", "yahoo", "SCB"
ltp: "112", "108.2", "112.4", 105.80"
datetime: "1/1/2014 11:01", "1/1/2014 11:01", "1/1/2014 11:01", "1/1/2014 11:01"
TABLE : share_percentage
company_code: "google", "HSBC", "yahoo", "SCB"
total_share: "12000", "20000", "5000", "18000"
と私のコード:
SELECT company.sector_id,
SUM(eod_stock.ltp * share_percentage.total_share) AS Market_CAP
FROM company
INNER JOIN (SELECT max(datetime) as lastTime,company_code
FROM eod_stock
GROUP BY company_code) as LAST_TRADE
ON LAST_TRADE.company_code = company.code
INNER JOIN eod_stock on eod_stock.datetime = Last_trade.lastTime
and eod_stock.company_code = company.code
INNER JOIN share_percentage on share_percentage.company_code = company.code
GROUP BY company.sector_id;
私は自分のSQLがうまくいかないことを知っていますが、達成したいのは最終結果として8.3のようなものです。操作を中断することでphpでコーディングできることは知っていますが、時間を節約できる場合はSQLから実現したいと考えていました。