次のシミュレートされたテーブルには、注文番号が表示されます。cust_nbr
は注文番号を表します。注文がitem_nbr
90000を含んでいる場合、90000の価格が他の商品と税金の合計よりも大きいかどうかを知る必要があります。この表には何十万というレコードがあります。私はTeradataを使用しています。複数集計、複数フィルタ、単一テーブルSQL
CREATE TABLE Line_Item_Details_Tbl (
cust_nbr INT,
trn_dt DATE,
str_typ VARCHAR(6),
trn_nbr INT,
item_nbr INT,
price DECIMAL(6,2),
tax DECIMAL(6,2)
);
サンプルデータ:
INSERT INTO Line_Item_Details_Tbl VALUES
(5551, '12/22/2011', 'store', 215, 12345, 10.00, 1.25);
INSERT INTO Line_Item_Details_Tbl VALUES
(5551, '12/22/2011', 'store', 215, 65715, 6.25, 0.75);
INSERT INTO Line_Item_Details_Tbl VALUES
(5551, '12/22/2011', 'store', 215, 90000, 40.00, 0);
INSERT INTO Line_Item_Details_Tbl VALUES
(6875, '12/10/2011', 'online', 856, 72345, 8.50, 1.00);
INSERT INTO Line_Item_Details_Tbl VALUES
(6875, '12/10/2011', 'online', 856, 65715, 6.25, 0.75);
INSERT INTO Line_Item_Details_Tbl VALUES
(3500, '12/12/2011', 'store', 402, 54123, 45.00, 4.00);
INSERT INTO Line_Item_Details_Tbl VALUES
(3500, '12/12/2011', 'store', 402, 90000, 20.00, 0);
INSERT INTO Line_Item_Details_Tbl VALUES
クエリは、次の操作を行う必要があります。
Select cust_nbr, trn_dt, trn_nbr, sum(price + tax) as purchase
For a cust_nbr with str_typ = 'store' AND contains an item_nbr = 90000,
aggregate price + tax for all items related to cust_nbr except item_nbr 90000
ので、予備的な結果は次のようになります。そして、
cust_nbr : trn_dt : trn_nbr : purchase
5551 12/22/2011 215 $18.25
3500 12/12/2011 402 $49.00
、レコードごとに予備的な結果、私はnet_cb
ようpurchase
からitem_nbr
90000の価格を減算して購入がitem_nbr
90000未満の 価格である場合にのみ、結果を返す必要があるので、私のエンディング結果は次のようになります。
cust_nbr trn_dt trn_nbr net_cb
5551 12/22/2011 215 ($21.75)
あなたのRDBMSは何ですか? –
@Michal私はTeradataを使用しています。 –
@Donna:適切な[サンプルコード](http://sscce.org/)(ここではSQL文)は、任意のアドホックスキーマやサンプルデータ形式よりも便利です。サンプルは 'CREATE TABLE'と' INSERT ... VALUES'を使ってください。結果はコードの出力であり、コード自体ではないので、望ましい結果をサンプルコードとして提示する必要はありません。 – outis