马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Star Schema Benchmark(SSB) 是一个轻量级的数仓场景下的性能测试集。SSB 基于 TPC-H 提供了一个简化版的星型模子数据集,主要用于测试在星型模子下,多表关联查询的性能表现。别的,业界内通常也会将 SSB 打平为宽表模子(以下简称:SSB flat),来测试查询引擎的性能,参考Clickhouse。
1.情况准备
请先参照 官方文档 进行 Apache Doris 的安装部署,以得到一个正常运行中的 Doris 集群(至少包罗 1 FE 1 BE,推荐 1 FE 3 BE)。
2.数据准备
2.1 下载安装 SSB 数据生成工具
执行以下脚本下载并编译 ssb-tools 工具
- sh bin/build-ssb-dbgen.sh
复制代码 安装乐成后,将在 ssb-dbgen/ 目次下生成 dbgen 二进制文件。
2.2 生成 SSB 测试集
执行以下脚本生成 SSB 数据集:
- sh bin/gen-ssb-data.sh -s 100
复制代码
- 注1:通过 sh gen-ssb-data.sh -h 查看脚本资助。
- 注2:数据会以 .tbl 为后缀生成在 ssb-data/ 目次下。文件总大小约 600GB。生成时间可能在数分钟到1小时不等。
- 注3:默认生成 100G 的标准测试数据集
测试:
- # 生成命令
- sh bin/gen-ssb-data.sh -s 1
- # 生成数据
- 2.8M /opt/ssb/ssb-tools/bin/ssb-data/customer.tbl
- 228K /opt/ssb/ssb-tools/bin/ssb-data/date.tbl
- 57M /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.1
- 58M /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.10
- 57M /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.2
- 58M /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.3
- 58M /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.4
- 58M /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.5
- 58M /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.6
- 58M /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.7
- 58M /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.8
- 58M /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.9
- 17M /opt/ssb/ssb-tools/bin/ssb-data/part.tbl
- 164K /opt/ssb/ssb-tools/bin/ssb-data/supplier.tbl
复制代码 2.3 建表
2.3.1 准备 doris-cluster.conf 文件
在调用导入脚本前,需要将 FE 的 ip 端口等信息写在 doris-cluster.conf 文件中。文件位置在 ${DORIS_HOME}/tools/ssb-tools/conf/ 目次下。文件内容包罗 FE 的 ip,HTTP 端口,用户名,密码以及待导入数据的 DB 名称:
- # Any of FE host
- export FE_HOST='127.0.0.1'
- # http_port in fe.conf
- export FE_HTTP_PORT=8030
- # query_port in fe.conf
- export FE_QUERY_PORT=9030
- # Doris username
- export USER='root'
- # Doris password
- export PASSWORD=''
- # The database where SSB tables located
- export DB='ssb'
复制代码 2.3.2 执行以下脚本生成创建 SSB 表
- sh bin/create-ssb-tables.sh -s 10
复制代码 或者复制 create-ssb-tables.sql 和 create-ssb-flat-table.sql 中的建表语句,在 MySQL 客户端中执行。
- CREATE TABLE IF NOT EXISTS `lineorder` (
- `lo_orderkey` bigint(20) NOT NULL COMMENT "",
- `lo_linenumber` int(11) NOT NULL COMMENT "",
- `lo_custkey` int(11) NOT NULL COMMENT "",
- `lo_partkey` int(11) NOT NULL COMMENT "",
- `lo_suppkey` int(11) NOT NULL COMMENT "",
- `lo_orderdate` int(11) NOT NULL COMMENT "",
- `lo_orderpriority` varchar(16) NOT NULL COMMENT "",
- `lo_shippriority` int(11) NOT NULL COMMENT "",
- `lo_quantity` int(11) NOT NULL COMMENT "",
- `lo_extendedprice` int(11) NOT NULL COMMENT "",
- `lo_ordtotalprice` int(11) NOT NULL COMMENT "",
- `lo_discount` int(11) NOT NULL COMMENT "",
- `lo_revenue` int(11) NOT NULL COMMENT "",
- `lo_supplycost` int(11) NOT NULL COMMENT "",
- `lo_tax` int(11) NOT NULL COMMENT "",
- `lo_commitdate` int(11) NOT NULL COMMENT "",
- `lo_shipmode` varchar(11) NOT NULL COMMENT ""
- ) ENGINE=OLAP
- DUPLICATE KEY(`lo_orderkey`)
- COMMENT "OLAP"
- PARTITION BY RANGE(`lo_orderdate`)
- (
- PARTITION p1 VALUES [("-2147483648"), ("19930101")),
- PARTITION p2 VALUES [("19930101"), ("19940101")),
- PARTITION p3 VALUES [("19940101"), ("19950101")),
- PARTITION p4 VALUES [("19950101"), ("19960101")),
- PARTITION p5 VALUES [("19960101"), ("19970101")),
- PARTITION p6 VALUES [("19970101"), ("19980101")),
- PARTITION p7 VALUES [("19980101"), ("19990101"))
- )
- DISTRIBUTED BY HASH(`lo_orderkey`) BUCKETS 120
- PROPERTIES (
- "replication_num" = "1",
- "colocate_with" = "groupa1"
- );
- CREATE TABLE IF NOT EXISTS `customer` (
- `c_custkey` int(11) NOT NULL COMMENT "",
- `c_name` varchar(26) NOT NULL COMMENT "",
- `c_address` varchar(41) NOT NULL COMMENT "",
- `c_city` varchar(11) NOT NULL COMMENT "",
- `c_nation` varchar(16) NOT NULL COMMENT "",
- `c_region` varchar(13) NOT NULL COMMENT "",
- `c_phone` varchar(16) NOT NULL COMMENT "",
- `c_mktsegment` varchar(11) NOT NULL COMMENT ""
- ) ENGINE=OLAP
- DUPLICATE KEY(`c_custkey`)
- COMMENT "OLAP"
- DISTRIBUTED BY HASH(`c_custkey`) BUCKETS 12
- PROPERTIES (
- "replication_num" = "1",
- "colocate_with" = "groupa2"
- );
- CREATE TABLE IF NOT EXISTS `dates` (
- `d_datekey` int(11) NOT NULL COMMENT "",
- `d_date` varchar(20) NOT NULL COMMENT "",
- `d_dayofweek` varchar(10) NOT NULL COMMENT "",
- `d_month` varchar(11) NOT NULL COMMENT "",
- `d_year` int(11) NOT NULL COMMENT "",
- `d_yearmonthnum` int(11) NOT NULL COMMENT "",
- `d_yearmonth` varchar(9) NOT NULL COMMENT "",
- `d_daynuminweek` int(11) NOT NULL COMMENT "",
- `d_daynuminmonth` int(11) NOT NULL COMMENT "",
- `d_daynuminyear` int(11) NOT NULL COMMENT "",
- `d_monthnuminyear` int(11) NOT NULL COMMENT "",
- `d_weeknuminyear` int(11) NOT NULL COMMENT "",
- `d_sellingseason` varchar(14) NOT NULL COMMENT "",
- `d_lastdayinweekfl` int(11) NOT NULL COMMENT "",
- `d_lastdayinmonthfl` int(11) NOT NULL COMMENT "",
- `d_holidayfl` int(11) NOT NULL COMMENT "",
- `d_weekdayfl` int(11) NOT NULL COMMENT ""
- ) ENGINE=OLAP
- DUPLICATE KEY(`d_datekey`)
- COMMENT "OLAP"
- DISTRIBUTED BY HASH(`d_datekey`) BUCKETS 1
- PROPERTIES (
- "replication_num" = "1",
- "colocate_with" = "groupa3"
- );
- CREATE TABLE IF NOT EXISTS `supplier` (
- `s_suppkey` int(11) NOT NULL COMMENT "",
- `s_name` varchar(26) NOT NULL COMMENT "",
- `s_address` varchar(26) NOT NULL COMMENT "",
- `s_city` varchar(11) NOT NULL COMMENT "",
- `s_nation` varchar(16) NOT NULL COMMENT "",
- `s_region` varchar(13) NOT NULL COMMENT "",
- `s_phone` varchar(16) NOT NULL COMMENT ""
- ) ENGINE=OLAP
- DUPLICATE KEY(`s_suppkey`)
- COMMENT "OLAP"
- DISTRIBUTED BY HASH(`s_suppkey`) BUCKETS 12
- PROPERTIES (
- "replication_num" = "1",
- "colocate_with" = "groupa4"
- );
- CREATE TABLE IF NOT EXISTS `part` (
- `p_partkey` int(11) NOT NULL COMMENT "",
- `p_name` varchar(23) NOT NULL COMMENT "",
- `p_mfgr` varchar(7) NOT NULL COMMENT "",
- `p_category` varchar(8) NOT NULL COMMENT "",
- `p_brand` varchar(10) NOT NULL COMMENT "",
- `p_color` varchar(12) NOT NULL COMMENT "",
- `p_type` varchar(26) NOT NULL COMMENT "",
- `p_size` int(11) NOT NULL COMMENT "",
- `p_container` varchar(11) NOT NULL COMMENT ""
- ) ENGINE=OLAP
- DUPLICATE KEY(`p_partkey`)
- COMMENT "OLAP"
- DISTRIBUTED BY HASH(`p_partkey`) BUCKETS 12
- PROPERTIES (
- "replication_num" = "1",
- "colocate_with" = "groupa5"
- );
复制代码- CREATE TABLE IF NOT EXISTS `lineorder_flat` (
- `LO_ORDERDATE` int(11) NOT NULL COMMENT "",
- `LO_ORDERKEY` bigint(20) NOT NULL COMMENT "",
- `LO_LINENUMBER` tinyint(4) NOT NULL COMMENT "",
- `LO_CUSTKEY` int(11) NOT NULL COMMENT "",
- `LO_PARTKEY` int(11) NOT NULL COMMENT "",
- `LO_SUPPKEY` int(11) NOT NULL COMMENT "",
- `LO_ORDERPRIORITY` varchar(100) NOT NULL COMMENT "",
- `LO_SHIPPRIORITY` tinyint(4) NOT NULL COMMENT "",
- `LO_QUANTITY` tinyint(4) NOT NULL COMMENT "",
- `LO_EXTENDEDPRICE` int(11) NOT NULL COMMENT "",
- `LO_ORDTOTALPRICE` int(11) NOT NULL COMMENT "",
- `LO_DISCOUNT` tinyint(4) NOT NULL COMMENT "",
- `LO_REVENUE` int(11) NOT NULL COMMENT "",
- `LO_SUPPLYCOST` int(11) NOT NULL COMMENT "",
- `LO_TAX` tinyint(4) NOT NULL COMMENT "",
- `LO_COMMITDATE` date NOT NULL COMMENT "",
- `LO_SHIPMODE` varchar(100) NOT NULL COMMENT "",
- `C_NAME` varchar(100) NOT NULL COMMENT "",
- `C_ADDRESS` varchar(100) NOT NULL COMMENT "",
- `C_CITY` varchar(100) NOT NULL COMMENT "",
- `C_NATION` varchar(100) NOT NULL COMMENT "",
- `C_REGION` varchar(100) NOT NULL COMMENT "",
- `C_PHONE` varchar(100) NOT NULL COMMENT "",
- `C_MKTSEGMENT` varchar(100) NOT NULL COMMENT "",
- `S_NAME` varchar(100) NOT NULL COMMENT "",
- `S_ADDRESS` varchar(100) NOT NULL COMMENT "",
- `S_CITY` varchar(100) NOT NULL COMMENT "",
- `S_NATION` varchar(100) NOT NULL COMMENT "",
- `S_REGION` varchar(100) NOT NULL COMMENT "",
- `S_PHONE` varchar(100) NOT NULL COMMENT "",
- `P_NAME` varchar(100) NOT NULL COMMENT "",
- `P_MFGR` varchar(100) NOT NULL COMMENT "",
- `P_CATEGORY` varchar(100) NOT NULL COMMENT "",
- `P_BRAND` varchar(100) NOT NULL COMMENT "",
- `P_COLOR` varchar(100) NOT NULL COMMENT "",
- `P_TYPE` varchar(100) NOT NULL COMMENT "",
- `P_SIZE` tinyint(4) NOT NULL COMMENT "",
- `P_CONTAINER` varchar(100) NOT NULL COMMENT ""
- ) ENGINE=OLAP
- DUPLICATE KEY(`LO_ORDERDATE`, `LO_ORDERKEY`)
- COMMENT "OLAP"
- PARTITION BY RANGE(`LO_ORDERDATE`)
- (
- PARTITION p1992 VALUES [("-2147483648"), ("19930101")),
- PARTITION p1993 VALUES [("19930101"), ("19940101")),
- PARTITION p1994 VALUES [("19940101"), ("19950101")),
- PARTITION p1995 VALUES [("19950101"), ("19960101")),
- PARTITION p1996 VALUES [("19960101"), ("19970101")),
- PARTITION p1997 VALUES [("19970101"), ("19980101")),
- PARTITION p1998 VALUES [("19980101"), ("19990101"))
- )
- DISTRIBUTED BY HASH(`LO_ORDERKEY`) BUCKETS 120
- PROPERTIES (
- "replication_num" = "1",
- "colocate_with" = "groupxx1"
- );
复制代码 2.4 导入数据
使用以下下令完成 SSB 测试集全部数据导入及 SSB FLAT 宽表数据合成并导入到表里:
2.5 查抄导入数据
- select count(*) from part;
- select count(*) from customer;
- select count(*) from supplier;
- select count(*) from dates;
- select count(*) from lineorder;
- select count(*) from lineorder_flat;
复制代码 2.6 查询测试
SSB-FlAT 查询语句:ssb-flat-queries
标准 SSB 查询语句:ssb-queries
2.6.1 SSB FLAT 测试 SQL
- --Q1.1
- SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue
- FROM lineorder_flat
- WHERE
- LO_ORDERDATE >= 19930101
- AND LO_ORDERDATE <= 19931231
- AND LO_DISCOUNT BETWEEN 1 AND 3
- AND LO_QUANTITY < 25;
- --Q1.2
- SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue
- FROM lineorder_flat
- WHERE
- LO_ORDERDATE >= 19940101
- AND LO_ORDERDATE <= 19940131
- AND LO_DISCOUNT BETWEEN 4 AND 6
- AND LO_QUANTITY BETWEEN 26 AND 35;
- --Q1.3
- SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue
- FROM lineorder_flat
- WHERE
- weekofyear(LO_ORDERDATE) = 6
- AND LO_ORDERDATE >= 19940101
- AND LO_ORDERDATE <= 19941231
- AND LO_DISCOUNT BETWEEN 5 AND 7
- AND LO_QUANTITY BETWEEN 26 AND 35;
- --Q2.1
- SELECT
- SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR,
- P_BRAND
- FROM lineorder_flat
- WHERE P_CATEGORY = 'MFGR#12' AND S_REGION = 'AMERICA'
- GROUP BY YEAR, P_BRAND
- ORDER BY YEAR, P_BRAND;
- --Q2.2
- SELECT
- SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR,
- P_BRAND
- FROM lineorder_flat
- WHERE
- P_BRAND >= 'MFGR#2221'
- AND P_BRAND <= 'MFGR#2228'
- AND S_REGION = 'ASIA'
- GROUP BY YEAR, P_BRAND
- ORDER BY YEAR, P_BRAND;
- --Q2.3
- SELECT
- SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR,
- P_BRAND
- FROM lineorder_flat
- WHERE
- P_BRAND = 'MFGR#2239'
- AND S_REGION = 'EUROPE'
- GROUP BY YEAR, P_BRAND
- ORDER BY YEAR, P_BRAND;
- --Q3.1
- SELECT
- C_NATION,
- S_NATION, (LO_ORDERDATE DIV 10000) AS YEAR,
- SUM(LO_REVENUE) AS revenue
- FROM lineorder_flat
- WHERE
- C_REGION = 'ASIA'
- AND S_REGION = 'ASIA'
- AND LO_ORDERDATE >= 19920101
- AND LO_ORDERDATE <= 19971231
- GROUP BY C_NATION, S_NATION, YEAR
- ORDER BY YEAR ASC, revenue DESC;
- --Q3.2
- SELECT
- C_CITY,
- S_CITY, (LO_ORDERDATE DIV 10000) AS YEAR,
- SUM(LO_REVENUE) AS revenue
- FROM lineorder_flat
- WHERE
- C_NATION = 'UNITED STATES'
- AND S_NATION = 'UNITED STATES'
- AND LO_ORDERDATE >= 19920101
- AND LO_ORDERDATE <= 19971231
- GROUP BY C_CITY, S_CITY, YEAR
- ORDER BY YEAR ASC, revenue DESC;
- --Q3.3
- SELECT
- C_CITY,
- S_CITY, (LO_ORDERDATE DIV 10000) AS YEAR,
- SUM(LO_REVENUE) AS revenue
- FROM lineorder_flat
- WHERE
- C_CITY IN ('UNITED KI1', 'UNITED KI5')
- AND S_CITY IN ('UNITED KI1', 'UNITED KI5')
- AND LO_ORDERDATE >= 19920101
- AND LO_ORDERDATE <= 19971231
- GROUP BY C_CITY, S_CITY, YEAR
- ORDER BY YEAR ASC, revenue DESC;
- --Q3.4
- SELECT
- C_CITY,
- S_CITY, (LO_ORDERDATE DIV 10000) AS YEAR,
- SUM(LO_REVENUE) AS revenue
- FROM lineorder_flat
- WHERE
- C_CITY IN ('UNITED KI1', 'UNITED KI5')
- AND S_CITY IN ('UNITED KI1', 'UNITED KI5')
- AND LO_ORDERDATE >= 19971201
- AND LO_ORDERDATE <= 19971231
- GROUP BY C_CITY, S_CITY, YEAR
- ORDER BY YEAR ASC, revenue DESC;
- --Q4.1
- SELECT (LO_ORDERDATE DIV 10000) AS YEAR,
- C_NATION,
- SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit
- FROM lineorder_flat
- WHERE
- C_REGION = 'AMERICA'
- AND S_REGION = 'AMERICA'
- AND P_MFGR IN ('MFGR#1', 'MFGR#2')
- GROUP BY YEAR, C_NATION
- ORDER BY YEAR ASC, C_NATION ASC;
- --Q4.2
- SELECT (LO_ORDERDATE DIV 10000) AS YEAR,
- S_NATION,
- P_CATEGORY,
- SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit
- FROM lineorder_flat
- WHERE
- C_REGION = 'AMERICA'
- AND S_REGION = 'AMERICA'
- AND LO_ORDERDATE >= 19970101
- AND LO_ORDERDATE <= 19981231
- AND P_MFGR IN ('MFGR#1', 'MFGR#2')
- GROUP BY YEAR, S_NATION, P_CATEGORY
- ORDER BY
- YEAR ASC,
- S_NATION ASC,
- P_CATEGORY ASC;
- --Q4.3
- SELECT (LO_ORDERDATE DIV 10000) AS YEAR,
- S_CITY,
- P_BRAND,
- SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit
- FROM lineorder_flat
- WHERE
- S_NATION = 'UNITED STATES'
- AND LO_ORDERDATE >= 19970101
- AND LO_ORDERDATE <= 19981231
- AND P_CATEGORY = 'MFGR#14'
- GROUP BY YEAR, S_CITY, P_BRAND
- ORDER BY YEAR ASC, S_CITY ASC, P_BRAND ASC;
复制代码 2.6.2 SSB 标准测试 SQL
- --Q1.1
- SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE
- FROM lineorder, dates
- WHERE
- lo_orderdate = d_datekey
- AND d_year = 1993
- AND lo_discount BETWEEN 1 AND 3
- AND lo_quantity < 25;
- --Q1.2
- SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE
- FROM lineorder, dates
- WHERE
- lo_orderdate = d_datekey
- AND d_yearmonth = 'Jan1994'
- AND lo_discount BETWEEN 4 AND 6
- AND lo_quantity BETWEEN 26 AND 35;
-
- --Q1.3
- SELECT
- SUM(lo_extendedprice * lo_discount) AS REVENUE
- FROM lineorder, dates
- WHERE
- lo_orderdate = d_datekey
- AND d_weeknuminyear = 6
- AND d_year = 1994
- AND lo_discount BETWEEN 5 AND 7
- AND lo_quantity BETWEEN 26 AND 35;
-
- --Q2.1
- SELECT SUM(lo_revenue), d_year, p_brand
- FROM lineorder, dates, part, supplier
- WHERE
- lo_orderdate = d_datekey
- AND lo_partkey = p_partkey
- AND lo_suppkey = s_suppkey
- AND p_category = 'MFGR#12'
- AND s_region = 'AMERICA'
- GROUP BY d_year, p_brand
- ORDER BY p_brand;
- --Q2.2
- SELECT SUM(lo_revenue), d_year, p_brand
- FROM lineorder, dates, part, supplier
- WHERE
- lo_orderdate = d_datekey
- AND lo_partkey = p_partkey
- AND lo_suppkey = s_suppkey
- AND p_brand BETWEEN 'MFGR#2221' AND 'MFGR#2228'
- AND s_region = 'ASIA'
- GROUP BY d_year, p_brand
- ORDER BY d_year, p_brand;
- --Q2.3
- SELECT SUM(lo_revenue), d_year, p_brand
- FROM lineorder, dates, part, supplier
- WHERE
- lo_orderdate = d_datekey
- AND lo_partkey = p_partkey
- AND lo_suppkey = s_suppkey
- AND p_brand = 'MFGR#2239'
- AND s_region = 'EUROPE'
- GROUP BY d_year, p_brand
- ORDER BY d_year, p_brand;
- --Q3.1
- SELECT
- c_nation,
- s_nation,
- d_year,
- SUM(lo_revenue) AS REVENUE
- FROM customer, lineorder, supplier, dates
- WHERE
- lo_custkey = c_custkey
- AND lo_suppkey = s_suppkey
- AND lo_orderdate = d_datekey
- AND c_region = 'ASIA'
- AND s_region = 'ASIA'
- AND d_year >= 1992
- AND d_year <= 1997
- GROUP BY c_nation, s_nation, d_year
- ORDER BY d_year ASC, REVENUE DESC;
- --Q3.2
- SELECT
- c_city,
- s_city,
- d_year,
- SUM(lo_revenue) AS REVENUE
- FROM customer, lineorder, supplier, dates
- WHERE
- lo_custkey = c_custkey
- AND lo_suppkey = s_suppkey
- AND lo_orderdate = d_datekey
- AND c_nation = 'UNITED STATES'
- AND s_nation = 'UNITED STATES'
- AND d_year >= 1992
- AND d_year <= 1997
- GROUP BY c_city, s_city, d_year
- ORDER BY d_year ASC, REVENUE DESC;
- --Q3.3
- SELECT
- c_city,
- s_city,
- d_year,
- SUM(lo_revenue) AS REVENUE
- FROM customer, lineorder, supplier, dates
- WHERE
- lo_custkey = c_custkey
- AND lo_suppkey = s_suppkey
- AND lo_orderdate = d_datekey
- AND (
- c_city = 'UNITED KI1'
- OR c_city = 'UNITED KI5'
- )
- AND (
- s_city = 'UNITED KI1'
- OR s_city = 'UNITED KI5'
- )
- AND d_year >= 1992
- AND d_year <= 1997
- GROUP BY c_city, s_city, d_year
- ORDER BY d_year ASC, REVENUE DESC;
- --Q3.4
- SELECT
- c_city,
- s_city,
- d_year,
- SUM(lo_revenue) AS REVENUE
- FROM customer, lineorder, supplier, dates
- WHERE
- lo_custkey = c_custkey
- AND lo_suppkey = s_suppkey
- AND lo_orderdate = d_datekey
- AND (
- c_city = 'UNITED KI1'
- OR c_city = 'UNITED KI5'
- )
- AND (
- s_city = 'UNITED KI1'
- OR s_city = 'UNITED KI5'
- )
- AND d_yearmonth = 'Dec1997'
- GROUP BY c_city, s_city, d_year
- ORDER BY d_year ASC, REVENUE DESC;
- --Q4.1
- SELECT
- d_year,
- c_nation,
- SUM(lo_revenue - lo_supplycost) AS PROFIT
- FROM dates, customer, supplier, part, lineorder
- WHERE
- lo_custkey = c_custkey
- AND lo_suppkey = s_suppkey
- AND lo_partkey = p_partkey
- AND lo_orderdate = d_datekey
- AND c_region = 'AMERICA'
- AND s_region = 'AMERICA'
- AND (
- p_mfgr = 'MFGR#1'
- OR p_mfgr = 'MFGR#2'
- )
- GROUP BY d_year, c_nation
- ORDER BY d_year, c_nation;
- --Q4.2
- SELECT
- d_year,
- s_nation,
- p_category,
- SUM(lo_revenue - lo_supplycost) AS PROFIT
- FROM dates, customer, supplier, part, lineorder
- WHERE
- lo_custkey = c_custkey
- AND lo_suppkey = s_suppkey
- AND lo_partkey = p_partkey
- AND lo_orderdate = d_datekey
- AND c_region = 'AMERICA'
- AND s_region = 'AMERICA'
- AND (
- d_year = 1997
- OR d_year = 1998
- )
- AND (
- p_mfgr = 'MFGR#1'
- OR p_mfgr = 'MFGR#2'
- )
- GROUP BY d_year, s_nation, p_category
- ORDER BY d_year, s_nation, p_category;
- --Q4.3
- SELECT
- d_year,
- s_city,
- p_brand,
- SUM(lo_revenue - lo_supplycost) AS PROFIT
- FROM dates, customer, supplier, part, lineorder
- WHERE
- lo_custkey = c_custkey
- AND lo_suppkey = s_suppkey
- AND lo_partkey = p_partkey
- AND lo_orderdate = d_datekey
- AND s_nation = 'UNITED STATES'
- AND (
- d_year = 1997
- OR d_year = 1998
- )
- AND p_category = 'MFGR#14'
- GROUP BY d_year, s_city, p_brand
- ORDER BY d_year, s_city, p_brand;
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |