質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

7306閲覧

消費税の求め方

qwerty123

総合スコア26

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2015/08/03 01:12

それぞれの売り上げに消費税の3%、5%を加えた値を求めたいです。
1997年の1月から消費税が3%から5%に上がってしまうという設定で作成したいのですが、どのようにすればよいでしょうか。

SELECT SUBSTR(ORDERS.DAY,1,6) AS 年月, SUM (PRODUCT.PRICE * ORDERS.CNT)
AS 売上
FROM PRODUCT INNER JOIN ORDERS
ON PRODUCT.CODE = ORDERS.CODE

GROUP BY SUBSTR(ORDERS.DAY,1,6)

ORDER BY SUBSTR(ORDERS.DAY,1,6)

PRODUCTテーブル

CREATE TABLE PRODUCT (
CODE CHAR(3) NOT NULL PRIMARY KEY, -- 商品コード
NAME VARCHAR2(20), -- 商品名
PRICE NUMBER(10) -- 価格
);

ORDERSテーブル
CREATE TABLE ORDERS (
NO CHAR(4) NOT NULL PRIMARY KEY, -- 注文NO
DAY CHAR(8) NOT NULL, -- 日付
CODE CHAR(3) NOT NULL, -- 商品コード
CNT NUMBER(5) NOT NULL -- 個数
);

TAXSテーブル
CREATE TABLE TAXS (
STA_DAY CHAR(8) NOT NULL, -- 適用開始日
END_DAY CHAR(8) NOT NULL, -- 適用終了日
TAX NUMBER(10, 5) NOT NULL, -- 利率

PRIMARY KEY (STA_DAY, END_DAY)

);

INSERT INTO PRODUCT VALUES ('001', '犬', 110);
INSERT INTO PRODUCT VALUES ('002', '猫', 520);
INSERT INTO PRODUCT VALUES ('003', '豚', 450);
INSERT INTO PRODUCT VALUES ('004', '馬', 650);

INSERT INTO ORDERS VALUES ('0001', '19961214', '002', 10);
INSERT INTO ORDERS VALUES ('0002', '19961214', '002', 15);
INSERT INTO ORDERS VALUES ('0003', '19961214', '003', 30);
INSERT INTO ORDERS VALUES ('0004', '19961215', '003', 12);
INSERT INTO ORDERS VALUES ('0005', '19970101', '001', 8);
INSERT INTO ORDERS VALUES ('0006', '19970101', '002', 11);
INSERT INTO ORDERS VALUES ('0007', '19970123', '002', 60);
INSERT INTO ORDERS VALUES ('0008', '19970205', '001', 36);

INSERT INTO TAXS VALUES ('00000000', '19961231', 0.03);
INSERT INTO TAXS VALUES ('19970101', '99999999', 0.05);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ORDERSテーブルの売上日とTAXSテーブルの運用開始、終了日でJOINしてやれば、税率が取れますので、それで税込売上が算出できると思います。ただ実際の業務では税額算出の端数処理や非課税商品、課税区分(請求単位かなど)も勘案する必要があります。

sql

1SELECT SUBSTR(ORDERS.DAY,1,6) AS 年月, SUM (PRODUCT.PRICE * ORDERS.CNT * (1 * TAXS.TAX)) 2AS 売上 3FROM PRODUCT INNER JOIN ORDERS 4ON PRODUCT.CODE = ORDERS.CODE 5 6INNER JOIN TAXS 7ON ORDERS.STA_DAY <= ORDERS.DAY 8AND ORDERS.END_DAY >= ORDERS.DAY 9 10GROUP BY SUBSTR(ORDERS.DAY,1,6) 11 12ORDER BY SUBSTR(ORDERS.DAY,1,6) 13

投稿2015/08/03 02:34

chiku_

総合スコア1464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

売上日付とTAXSテーブルの期間を結合の条件にしたらいいんじゃないでしょうか?

SQL

1SELECT 2 SUBSTR(ORDERS.DAY, 1, 6) AS 年月 3 , SUB(PRODUCT.PRICE * ORDER.CNT) AS 税抜売上 4 , SUB(PRODUCT.PRICE * TAXS.TAX * ORDER.CNT) AS 税額 5 , SUB(PRODUCT.PRICE * (1 + TAXS.TAX) * ORDER.CNT) AS 税込売上 6FROM PRODUCT 7INNER JOIN ORDERS 8ON PRODUCT.CODE = ORDERS.CODE 9INNER JOIN TAXS 10ON ORDERS.DAY BETWEEN TAXS.STA_DAY AND TAXS.END_DAY 11GROUP BY 12 SUBSTR(ORDERS.DAY, 1, 6) 13ORDER BY 14 SUBSTR(ORDERS.DAY, 1, 6) 15

投稿2015/08/03 02:31

kutsulog

総合スコア985

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問