ここでは、顧客1人あたりに購入したトップ10のアイテムを調べるために書いた手順を示します。MySQLの手続き - 作業の流れ
これは私が試行した最初のPL/SQLのことです。これは私が期待していることではありません。
私が使用したロジックは、開始日、終了日を受け入れることです&トップ 'x'の売上高は私が顧客あたりに興味がある。その後、ユニークな顧客テーブルをループするには - cust_table
& 1人1日当たりトップ 'x'が見つかります。
この機能を利用するには、ガイダンスをリクエストしてください。
CREATE PROCEDURE `at _the _top`(in stDate date, in edDate date, in lim int)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE cust TEXT;
DECLARE custNames CURSOR FOR SELECT CUSTOMER FROM cust_table;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN custNames;
read_loop: LOOP
FETCH custNames INTO cust;
IF done THEN
LEAVE read_loop;
END IF;
WHILE(stDate <= edDate) DO
#insert into top_cust(EVE_DATE,CUST_NAME,ITEM_ID,ITEMS_PURCHASED) (select EVE_DATE, CUST_NAME, ITEM_ID, SUM(ITEM_BUNDLE_SIZE) as ITEMS_PURCHASED_TOTAL from cust_sales_hist where EVE_DATE = stDate and CUST_NAME = cust group by EVE_DATE, ITEM_ID order by ITEMS_PURCHASED_TOTAL desc limit lim);
SELECT concat('Custome - ', cust);
SELECT CONCAT('Start Date - ', stDate);
SELECT CONCAT('End date - ', edDate);
SELECT CONCAT('Limit - ', lim);
SELECT
EVE_DATE,
CUST_NAME,
ITEM_ID,
SUM(ITEM_BUNDLE_SIZE) AS ITEMS_PURCHASED_TOTAL
FROM
cust_sales_hist
WHERE
EVE_DATE = stDate
AND CUST_NAME = cust
GROUP BY
EVE_DATE ,
ITEM_ID
ORDER BY
ITEMS_PURCHASED_TOTAL DESC
LIMIT
LIM;
SET stDate = date_add(stDate, INTERVAL 1 DAY);
end WHILE;
END LOOP;
CLOSE custNames;
END
これは、PL/SQLではありません。 PL/SQLは、Oracleデータベースで使用されるプロシージャ言語です。私は、MySQLが独自の手続き型言語のための特定の名前を持っていることを知らない。 – sstan
ニース、そこにいる誰かが、この質問のために指を横切って閉じていることと、また下に投票しています。よくやった。それはわたしを助ける。ありがとうトン – usert4jju7
いいえ。それは、質問が実際にはっきりしていないということだけです。*私がそれが期待していることはありません。*は明確な問題文ではありません。 @sgeddesの答えの中のコメントの長いと長いものは、通常、質問がより多くの情報/詳細(サンプルデータ、望ましい結果、いつも...)を必要としているというサインです。これはあなたの最初のSQLの質問ではないので、あなたは今IMHOによってよく知っておくべきです。 – sstan