Doris【部署 02】Linux情况Doris数据库进行SSB基准测试

嚴華  论坛元老 | 2024-6-21 13:07:22 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1051|帖子 1051|积分 3153

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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 工具
  1. sh bin/build-ssb-dbgen.sh
复制代码
安装乐成后,将在 ssb-dbgen/ 目次下生成 dbgen 二进制文件。
2.2 生成 SSB 测试集

执行以下脚本生成 SSB 数据集:
  1. sh bin/gen-ssb-data.sh -s 100
复制代码


  • 注1:通过 sh gen-ssb-data.sh -h 查看脚本资助。
  • 注2:数据会以 .tbl 为后缀生成在 ssb-data/ 目次下。文件总大小约 600GB。生成时间可能在数分钟到1小时不等。
  • 注3:默认生成 100G 的标准测试数据集
测试:
  1. # 生成命令
  2. sh bin/gen-ssb-data.sh -s 1
  3. # 生成数据
  4. 2.8M    /opt/ssb/ssb-tools/bin/ssb-data/customer.tbl
  5. 228K    /opt/ssb/ssb-tools/bin/ssb-data/date.tbl
  6. 57M     /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.1
  7. 58M     /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.10
  8. 57M     /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.2
  9. 58M     /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.3
  10. 58M     /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.4
  11. 58M     /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.5
  12. 58M     /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.6
  13. 58M     /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.7
  14. 58M     /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.8
  15. 58M     /opt/ssb/ssb-tools/bin/ssb-data/lineorder.tbl.9
  16. 17M     /opt/ssb/ssb-tools/bin/ssb-data/part.tbl
  17. 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 名称:
  1. # Any of FE host
  2. export FE_HOST='127.0.0.1'
  3. # http_port in fe.conf
  4. export FE_HTTP_PORT=8030
  5. # query_port in fe.conf
  6. export FE_QUERY_PORT=9030
  7. # Doris username
  8. export USER='root'
  9. # Doris password
  10. export PASSWORD=''
  11. # The database where SSB tables located
  12. export DB='ssb'
复制代码
2.3.2 执行以下脚本生成创建 SSB 表

  1. sh bin/create-ssb-tables.sh -s 10
复制代码
或者复制 create-ssb-tables.sql 和 create-ssb-flat-table.sql 中的建表语句,在 MySQL 客户端中执行。
  1. CREATE TABLE IF NOT EXISTS `lineorder` (
  2.   `lo_orderkey` bigint(20) NOT NULL COMMENT "",
  3.   `lo_linenumber` int(11) NOT NULL COMMENT "",
  4.   `lo_custkey` int(11) NOT NULL COMMENT "",
  5.   `lo_partkey` int(11) NOT NULL COMMENT "",
  6.   `lo_suppkey` int(11) NOT NULL COMMENT "",
  7.   `lo_orderdate` int(11) NOT NULL COMMENT "",
  8.   `lo_orderpriority` varchar(16) NOT NULL COMMENT "",
  9.   `lo_shippriority` int(11) NOT NULL COMMENT "",
  10.   `lo_quantity` int(11) NOT NULL COMMENT "",
  11.   `lo_extendedprice` int(11) NOT NULL COMMENT "",
  12.   `lo_ordtotalprice` int(11) NOT NULL COMMENT "",
  13.   `lo_discount` int(11) NOT NULL COMMENT "",
  14.   `lo_revenue` int(11) NOT NULL COMMENT "",
  15.   `lo_supplycost` int(11) NOT NULL COMMENT "",
  16.   `lo_tax` int(11) NOT NULL COMMENT "",
  17.   `lo_commitdate` int(11) NOT NULL COMMENT "",
  18.   `lo_shipmode` varchar(11) NOT NULL COMMENT ""
  19. ) ENGINE=OLAP
  20. DUPLICATE KEY(`lo_orderkey`)
  21. COMMENT "OLAP"
  22. PARTITION BY RANGE(`lo_orderdate`)
  23. (
  24. PARTITION p1 VALUES [("-2147483648"), ("19930101")),
  25. PARTITION p2 VALUES [("19930101"), ("19940101")),
  26. PARTITION p3 VALUES [("19940101"), ("19950101")),
  27. PARTITION p4 VALUES [("19950101"), ("19960101")),
  28. PARTITION p5 VALUES [("19960101"), ("19970101")),
  29. PARTITION p6 VALUES [("19970101"), ("19980101")),
  30. PARTITION p7 VALUES [("19980101"), ("19990101"))
  31. )
  32. DISTRIBUTED BY HASH(`lo_orderkey`) BUCKETS 120
  33. PROPERTIES (
  34.   "replication_num" = "1",
  35.   "colocate_with" = "groupa1"
  36. );
  37. CREATE TABLE IF NOT EXISTS `customer` (
  38.   `c_custkey` int(11) NOT NULL COMMENT "",
  39.   `c_name` varchar(26) NOT NULL COMMENT "",
  40.   `c_address` varchar(41) NOT NULL COMMENT "",
  41.   `c_city` varchar(11) NOT NULL COMMENT "",
  42.   `c_nation` varchar(16) NOT NULL COMMENT "",
  43.   `c_region` varchar(13) NOT NULL COMMENT "",
  44.   `c_phone` varchar(16) NOT NULL COMMENT "",
  45.   `c_mktsegment` varchar(11) NOT NULL COMMENT ""
  46. ) ENGINE=OLAP
  47. DUPLICATE KEY(`c_custkey`)
  48. COMMENT "OLAP"
  49. DISTRIBUTED BY HASH(`c_custkey`) BUCKETS 12
  50. PROPERTIES (
  51.   "replication_num" = "1",
  52.   "colocate_with" = "groupa2"
  53. );
  54. CREATE TABLE IF NOT EXISTS `dates` (
  55.   `d_datekey` int(11) NOT NULL COMMENT "",
  56.   `d_date` varchar(20) NOT NULL COMMENT "",
  57.   `d_dayofweek` varchar(10) NOT NULL COMMENT "",
  58.   `d_month` varchar(11) NOT NULL COMMENT "",
  59.   `d_year` int(11) NOT NULL COMMENT "",
  60.   `d_yearmonthnum` int(11) NOT NULL COMMENT "",
  61.   `d_yearmonth` varchar(9) NOT NULL COMMENT "",
  62.   `d_daynuminweek` int(11) NOT NULL COMMENT "",
  63.   `d_daynuminmonth` int(11) NOT NULL COMMENT "",
  64.   `d_daynuminyear` int(11) NOT NULL COMMENT "",
  65.   `d_monthnuminyear` int(11) NOT NULL COMMENT "",
  66.   `d_weeknuminyear` int(11) NOT NULL COMMENT "",
  67.   `d_sellingseason` varchar(14) NOT NULL COMMENT "",
  68.   `d_lastdayinweekfl` int(11) NOT NULL COMMENT "",
  69.   `d_lastdayinmonthfl` int(11) NOT NULL COMMENT "",
  70.   `d_holidayfl` int(11) NOT NULL COMMENT "",
  71.   `d_weekdayfl` int(11) NOT NULL COMMENT ""
  72. ) ENGINE=OLAP
  73. DUPLICATE KEY(`d_datekey`)
  74. COMMENT "OLAP"
  75. DISTRIBUTED BY HASH(`d_datekey`) BUCKETS 1
  76. PROPERTIES (
  77.   "replication_num" = "1",
  78.   "colocate_with" = "groupa3"
  79. );
  80. CREATE TABLE IF NOT EXISTS `supplier` (
  81.   `s_suppkey` int(11) NOT NULL COMMENT "",
  82.   `s_name` varchar(26) NOT NULL COMMENT "",
  83.   `s_address` varchar(26) NOT NULL COMMENT "",
  84.   `s_city` varchar(11) NOT NULL COMMENT "",
  85.   `s_nation` varchar(16) NOT NULL COMMENT "",
  86.   `s_region` varchar(13) NOT NULL COMMENT "",
  87.   `s_phone` varchar(16) NOT NULL COMMENT ""
  88. ) ENGINE=OLAP
  89. DUPLICATE KEY(`s_suppkey`)
  90. COMMENT "OLAP"
  91. DISTRIBUTED BY HASH(`s_suppkey`) BUCKETS 12
  92. PROPERTIES (
  93.   "replication_num" = "1",
  94.   "colocate_with" = "groupa4"
  95. );
  96. CREATE TABLE IF NOT EXISTS `part` (
  97.   `p_partkey` int(11) NOT NULL COMMENT "",
  98.   `p_name` varchar(23) NOT NULL COMMENT "",
  99.   `p_mfgr` varchar(7) NOT NULL COMMENT "",
  100.   `p_category` varchar(8) NOT NULL COMMENT "",
  101.   `p_brand` varchar(10) NOT NULL COMMENT "",
  102.   `p_color` varchar(12) NOT NULL COMMENT "",
  103.   `p_type` varchar(26) NOT NULL COMMENT "",
  104.   `p_size` int(11) NOT NULL COMMENT "",
  105.   `p_container` varchar(11) NOT NULL COMMENT ""
  106. ) ENGINE=OLAP
  107. DUPLICATE KEY(`p_partkey`)
  108. COMMENT "OLAP"
  109. DISTRIBUTED BY HASH(`p_partkey`) BUCKETS 12
  110. PROPERTIES (
  111.   "replication_num" = "1",
  112.   "colocate_with" = "groupa5"
  113. );
复制代码
  1. CREATE TABLE IF NOT EXISTS `lineorder_flat` (
  2.   `LO_ORDERDATE` int(11) NOT NULL COMMENT "",
  3.   `LO_ORDERKEY` bigint(20) NOT NULL COMMENT "",
  4.   `LO_LINENUMBER` tinyint(4) NOT NULL COMMENT "",
  5.   `LO_CUSTKEY` int(11) NOT NULL COMMENT "",
  6.   `LO_PARTKEY` int(11) NOT NULL COMMENT "",
  7.   `LO_SUPPKEY` int(11) NOT NULL COMMENT "",
  8.   `LO_ORDERPRIORITY` varchar(100) NOT NULL COMMENT "",
  9.   `LO_SHIPPRIORITY` tinyint(4) NOT NULL COMMENT "",
  10.   `LO_QUANTITY` tinyint(4) NOT NULL COMMENT "",
  11.   `LO_EXTENDEDPRICE` int(11) NOT NULL COMMENT "",
  12.   `LO_ORDTOTALPRICE` int(11) NOT NULL COMMENT "",
  13.   `LO_DISCOUNT` tinyint(4) NOT NULL COMMENT "",
  14.   `LO_REVENUE` int(11) NOT NULL COMMENT "",
  15.   `LO_SUPPLYCOST` int(11) NOT NULL COMMENT "",
  16.   `LO_TAX` tinyint(4) NOT NULL COMMENT "",
  17.   `LO_COMMITDATE` date NOT NULL COMMENT "",
  18.   `LO_SHIPMODE` varchar(100) NOT NULL COMMENT "",
  19.   `C_NAME` varchar(100) NOT NULL COMMENT "",
  20.   `C_ADDRESS` varchar(100) NOT NULL COMMENT "",
  21.   `C_CITY` varchar(100) NOT NULL COMMENT "",
  22.   `C_NATION` varchar(100) NOT NULL COMMENT "",
  23.   `C_REGION` varchar(100) NOT NULL COMMENT "",
  24.   `C_PHONE` varchar(100) NOT NULL COMMENT "",
  25.   `C_MKTSEGMENT` varchar(100) NOT NULL COMMENT "",
  26.   `S_NAME` varchar(100) NOT NULL COMMENT "",
  27.   `S_ADDRESS` varchar(100) NOT NULL COMMENT "",
  28.   `S_CITY` varchar(100) NOT NULL COMMENT "",
  29.   `S_NATION` varchar(100) NOT NULL COMMENT "",
  30.   `S_REGION` varchar(100) NOT NULL COMMENT "",
  31.   `S_PHONE` varchar(100) NOT NULL COMMENT "",
  32.   `P_NAME` varchar(100) NOT NULL COMMENT "",
  33.   `P_MFGR` varchar(100) NOT NULL COMMENT "",
  34.   `P_CATEGORY` varchar(100) NOT NULL COMMENT "",
  35.   `P_BRAND` varchar(100) NOT NULL COMMENT "",
  36.   `P_COLOR` varchar(100) NOT NULL COMMENT "",
  37.   `P_TYPE` varchar(100) NOT NULL COMMENT "",
  38.   `P_SIZE` tinyint(4) NOT NULL COMMENT "",
  39.   `P_CONTAINER` varchar(100) NOT NULL COMMENT ""
  40. ) ENGINE=OLAP
  41. DUPLICATE KEY(`LO_ORDERDATE`, `LO_ORDERKEY`)
  42. COMMENT "OLAP"
  43. PARTITION BY RANGE(`LO_ORDERDATE`)
  44. (
  45. PARTITION p1992 VALUES [("-2147483648"), ("19930101")),
  46. PARTITION p1993 VALUES [("19930101"), ("19940101")),
  47. PARTITION p1994 VALUES [("19940101"), ("19950101")),
  48. PARTITION p1995 VALUES [("19950101"), ("19960101")),
  49. PARTITION p1996 VALUES [("19960101"), ("19970101")),
  50. PARTITION p1997 VALUES [("19970101"), ("19980101")),
  51. PARTITION p1998 VALUES [("19980101"), ("19990101"))
  52. )
  53. DISTRIBUTED BY HASH(`LO_ORDERKEY`) BUCKETS 120
  54. PROPERTIES (
  55.   "replication_num" = "1",
  56.   "colocate_with" = "groupxx1"
  57. );
复制代码
2.4 导入数据

使用以下下令完成 SSB 测试集全部数据导入及 SSB FLAT 宽表数据合成并导入到表里:
  1. sh bin/load-ssb-data.sh
复制代码
2.5 查抄导入数据

  1. select count(*) from part;
  2. select count(*) from customer;
  3. select count(*) from supplier;
  4. select count(*) from dates;
  5. select count(*) from lineorder;
  6. select count(*) from lineorder_flat;
复制代码
2.6 查询测试

SSB-FlAT 查询语句:ssb-flat-queries
标准 SSB 查询语句:ssb-queries
2.6.1 SSB FLAT 测试 SQL

  1. --Q1.1
  2. SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue
  3. FROM lineorder_flat
  4. WHERE
  5.     LO_ORDERDATE >= 19930101
  6.     AND LO_ORDERDATE <= 19931231
  7.     AND LO_DISCOUNT BETWEEN 1 AND 3
  8.     AND LO_QUANTITY < 25;
  9. --Q1.2
  10. SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue
  11. FROM lineorder_flat
  12. WHERE
  13.     LO_ORDERDATE >= 19940101
  14.   AND LO_ORDERDATE <= 19940131
  15.   AND LO_DISCOUNT BETWEEN 4 AND 6
  16.   AND LO_QUANTITY BETWEEN 26 AND 35;
  17. --Q1.3
  18. SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue
  19. FROM lineorder_flat
  20. WHERE
  21.     weekofyear(LO_ORDERDATE) = 6
  22.   AND LO_ORDERDATE >= 19940101
  23.   AND LO_ORDERDATE <= 19941231
  24.   AND LO_DISCOUNT BETWEEN 5 AND 7
  25.   AND LO_QUANTITY BETWEEN 26 AND 35;
  26. --Q2.1
  27. SELECT
  28.     SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR,
  29.     P_BRAND
  30. FROM lineorder_flat
  31. WHERE P_CATEGORY = 'MFGR#12' AND S_REGION = 'AMERICA'
  32. GROUP BY YEAR, P_BRAND
  33. ORDER BY YEAR, P_BRAND;
  34. --Q2.2
  35. SELECT
  36.     SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR,
  37.     P_BRAND
  38. FROM lineorder_flat
  39. WHERE
  40.     P_BRAND >= 'MFGR#2221'
  41.   AND P_BRAND <= 'MFGR#2228'
  42.   AND S_REGION = 'ASIA'
  43. GROUP BY YEAR, P_BRAND
  44. ORDER BY YEAR, P_BRAND;
  45. --Q2.3
  46. SELECT
  47.     SUM(LO_REVENUE), (LO_ORDERDATE DIV 10000) AS YEAR,
  48.     P_BRAND
  49. FROM lineorder_flat
  50. WHERE
  51.     P_BRAND = 'MFGR#2239'
  52.   AND S_REGION = 'EUROPE'
  53. GROUP BY YEAR, P_BRAND
  54. ORDER BY YEAR, P_BRAND;
  55. --Q3.1
  56. SELECT
  57.     C_NATION,
  58.     S_NATION, (LO_ORDERDATE DIV 10000) AS YEAR,
  59.     SUM(LO_REVENUE) AS revenue
  60. FROM lineorder_flat
  61. WHERE
  62.     C_REGION = 'ASIA'
  63.   AND S_REGION = 'ASIA'
  64.   AND LO_ORDERDATE >= 19920101
  65.   AND LO_ORDERDATE <= 19971231
  66. GROUP BY C_NATION, S_NATION, YEAR
  67. ORDER BY YEAR ASC, revenue DESC;
  68. --Q3.2
  69. SELECT
  70.     C_CITY,
  71.     S_CITY, (LO_ORDERDATE DIV 10000) AS YEAR,
  72.     SUM(LO_REVENUE) AS revenue
  73. FROM lineorder_flat
  74. WHERE
  75.     C_NATION = 'UNITED STATES'
  76.   AND S_NATION = 'UNITED STATES'
  77.   AND LO_ORDERDATE >= 19920101
  78.   AND LO_ORDERDATE <= 19971231
  79. GROUP BY C_CITY, S_CITY, YEAR
  80. ORDER BY YEAR ASC, revenue DESC;
  81. --Q3.3
  82. SELECT
  83.     C_CITY,
  84.     S_CITY, (LO_ORDERDATE DIV 10000) AS YEAR,
  85.     SUM(LO_REVENUE) AS revenue
  86. FROM lineorder_flat
  87. WHERE
  88.     C_CITY IN ('UNITED KI1', 'UNITED KI5')
  89.   AND S_CITY IN ('UNITED KI1', 'UNITED KI5')
  90.   AND LO_ORDERDATE >= 19920101
  91.   AND LO_ORDERDATE <= 19971231
  92. GROUP BY C_CITY, S_CITY, YEAR
  93. ORDER BY YEAR ASC, revenue DESC;
  94. --Q3.4
  95. SELECT
  96.     C_CITY,
  97.     S_CITY, (LO_ORDERDATE DIV 10000) AS YEAR,
  98.     SUM(LO_REVENUE) AS revenue
  99. FROM lineorder_flat
  100. WHERE
  101.     C_CITY IN ('UNITED KI1', 'UNITED KI5')
  102.   AND S_CITY IN ('UNITED KI1', 'UNITED KI5')
  103.   AND LO_ORDERDATE >= 19971201
  104.   AND LO_ORDERDATE <= 19971231
  105. GROUP BY C_CITY, S_CITY, YEAR
  106. ORDER BY YEAR ASC, revenue DESC;
  107. --Q4.1
  108. SELECT (LO_ORDERDATE DIV 10000) AS YEAR,
  109.     C_NATION,
  110.     SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit
  111. FROM lineorder_flat
  112. WHERE
  113.     C_REGION = 'AMERICA'
  114.   AND S_REGION = 'AMERICA'
  115.   AND P_MFGR IN ('MFGR#1', 'MFGR#2')
  116. GROUP BY YEAR, C_NATION
  117. ORDER BY YEAR ASC, C_NATION ASC;
  118. --Q4.2
  119. SELECT (LO_ORDERDATE DIV 10000) AS YEAR,
  120.     S_NATION,
  121.     P_CATEGORY,
  122.     SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit
  123. FROM lineorder_flat
  124. WHERE
  125.     C_REGION = 'AMERICA'
  126.   AND S_REGION = 'AMERICA'
  127.   AND LO_ORDERDATE >= 19970101
  128.   AND LO_ORDERDATE <= 19981231
  129.   AND P_MFGR IN ('MFGR#1', 'MFGR#2')
  130. GROUP BY YEAR, S_NATION, P_CATEGORY
  131. ORDER BY
  132.     YEAR ASC,
  133.     S_NATION ASC,
  134.     P_CATEGORY ASC;
  135. --Q4.3
  136. SELECT (LO_ORDERDATE DIV 10000) AS YEAR,
  137.     S_CITY,
  138.     P_BRAND,
  139.     SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit
  140. FROM lineorder_flat
  141. WHERE
  142.     S_NATION = 'UNITED STATES'
  143.   AND LO_ORDERDATE >= 19970101
  144.   AND LO_ORDERDATE <= 19981231
  145.   AND P_CATEGORY = 'MFGR#14'
  146. GROUP BY YEAR, S_CITY, P_BRAND
  147. ORDER BY YEAR ASC, S_CITY ASC, P_BRAND ASC;
复制代码
2.6.2 SSB 标准测试 SQL

  1. --Q1.1
  2. SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE
  3. FROM lineorder, dates
  4. WHERE
  5.     lo_orderdate = d_datekey
  6.   AND d_year = 1993
  7.   AND lo_discount BETWEEN 1 AND 3
  8.   AND lo_quantity < 25;
  9. --Q1.2
  10. SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE
  11. FROM lineorder, dates
  12. WHERE
  13.     lo_orderdate = d_datekey
  14.   AND d_yearmonth = 'Jan1994'
  15.   AND lo_discount BETWEEN 4 AND 6
  16.   AND lo_quantity BETWEEN 26 AND 35;
  17.    
  18. --Q1.3
  19. SELECT
  20.     SUM(lo_extendedprice * lo_discount) AS REVENUE
  21. FROM lineorder, dates
  22. WHERE
  23.     lo_orderdate = d_datekey
  24.   AND d_weeknuminyear = 6
  25.   AND d_year = 1994
  26.   AND lo_discount BETWEEN 5 AND 7
  27.   AND lo_quantity BETWEEN 26 AND 35;
  28.    
  29. --Q2.1
  30. SELECT SUM(lo_revenue), d_year, p_brand
  31. FROM lineorder, dates, part, supplier
  32. WHERE
  33.     lo_orderdate = d_datekey
  34.   AND lo_partkey = p_partkey
  35.   AND lo_suppkey = s_suppkey
  36.   AND p_category = 'MFGR#12'
  37.   AND s_region = 'AMERICA'
  38. GROUP BY d_year, p_brand
  39. ORDER BY p_brand;
  40. --Q2.2
  41. SELECT SUM(lo_revenue), d_year, p_brand
  42. FROM lineorder, dates, part, supplier
  43. WHERE
  44.     lo_orderdate = d_datekey
  45.   AND lo_partkey = p_partkey
  46.   AND lo_suppkey = s_suppkey
  47.   AND p_brand BETWEEN 'MFGR#2221' AND 'MFGR#2228'
  48.   AND s_region = 'ASIA'
  49. GROUP BY d_year, p_brand
  50. ORDER BY d_year, p_brand;
  51. --Q2.3
  52. SELECT SUM(lo_revenue), d_year, p_brand
  53. FROM lineorder, dates, part, supplier
  54. WHERE
  55.     lo_orderdate = d_datekey
  56.   AND lo_partkey = p_partkey
  57.   AND lo_suppkey = s_suppkey
  58.   AND p_brand = 'MFGR#2239'
  59.   AND s_region = 'EUROPE'
  60. GROUP BY d_year, p_brand
  61. ORDER BY d_year, p_brand;
  62. --Q3.1
  63. SELECT
  64.     c_nation,
  65.     s_nation,
  66.     d_year,
  67.     SUM(lo_revenue) AS REVENUE
  68. FROM customer, lineorder, supplier, dates
  69. WHERE
  70.     lo_custkey = c_custkey
  71.   AND lo_suppkey = s_suppkey
  72.   AND lo_orderdate = d_datekey
  73.   AND c_region = 'ASIA'
  74.   AND s_region = 'ASIA'
  75.   AND d_year >= 1992
  76.   AND d_year <= 1997
  77. GROUP BY c_nation, s_nation, d_year
  78. ORDER BY d_year ASC, REVENUE DESC;
  79. --Q3.2
  80. SELECT
  81.     c_city,
  82.     s_city,
  83.     d_year,
  84.     SUM(lo_revenue) AS REVENUE
  85. FROM customer, lineorder, supplier, dates
  86. WHERE
  87.     lo_custkey = c_custkey
  88.   AND lo_suppkey = s_suppkey
  89.   AND lo_orderdate = d_datekey
  90.   AND c_nation = 'UNITED STATES'
  91.   AND s_nation = 'UNITED STATES'
  92.   AND d_year >= 1992
  93.   AND d_year <= 1997
  94. GROUP BY c_city, s_city, d_year
  95. ORDER BY d_year ASC, REVENUE DESC;
  96. --Q3.3
  97. SELECT
  98.     c_city,
  99.     s_city,
  100.     d_year,
  101.     SUM(lo_revenue) AS REVENUE
  102. FROM customer, lineorder, supplier, dates
  103. WHERE
  104.     lo_custkey = c_custkey
  105.   AND lo_suppkey = s_suppkey
  106.   AND lo_orderdate = d_datekey
  107.   AND (
  108.             c_city = 'UNITED KI1'
  109.         OR c_city = 'UNITED KI5'
  110.     )
  111.   AND (
  112.             s_city = 'UNITED KI1'
  113.         OR s_city = 'UNITED KI5'
  114.     )
  115.   AND d_year >= 1992
  116.   AND d_year <= 1997
  117. GROUP BY c_city, s_city, d_year
  118. ORDER BY d_year ASC, REVENUE DESC;
  119. --Q3.4
  120. SELECT
  121.     c_city,
  122.     s_city,
  123.     d_year,
  124.     SUM(lo_revenue) AS REVENUE
  125. FROM customer, lineorder, supplier, dates
  126. WHERE
  127.     lo_custkey = c_custkey
  128.   AND lo_suppkey = s_suppkey
  129.   AND lo_orderdate = d_datekey
  130.   AND (
  131.             c_city = 'UNITED KI1'
  132.         OR c_city = 'UNITED KI5'
  133.     )
  134.   AND (
  135.             s_city = 'UNITED KI1'
  136.         OR s_city = 'UNITED KI5'
  137.     )
  138.   AND d_yearmonth = 'Dec1997'
  139. GROUP BY c_city, s_city, d_year
  140. ORDER BY d_year ASC, REVENUE DESC;
  141. --Q4.1
  142. SELECT
  143.     d_year,
  144.     c_nation,
  145.     SUM(lo_revenue - lo_supplycost) AS PROFIT
  146. FROM dates, customer, supplier, part, lineorder
  147. WHERE
  148.     lo_custkey = c_custkey
  149.   AND lo_suppkey = s_suppkey
  150.   AND lo_partkey = p_partkey
  151.   AND lo_orderdate = d_datekey
  152.   AND c_region = 'AMERICA'
  153.   AND s_region = 'AMERICA'
  154.   AND (
  155.             p_mfgr = 'MFGR#1'
  156.         OR p_mfgr = 'MFGR#2'
  157.     )
  158. GROUP BY d_year, c_nation
  159. ORDER BY d_year, c_nation;
  160. --Q4.2
  161. SELECT
  162.     d_year,
  163.     s_nation,
  164.     p_category,
  165.     SUM(lo_revenue - lo_supplycost) AS PROFIT
  166. FROM dates, customer, supplier, part, lineorder
  167. WHERE
  168.     lo_custkey = c_custkey
  169.   AND lo_suppkey = s_suppkey
  170.   AND lo_partkey = p_partkey
  171.   AND lo_orderdate = d_datekey
  172.   AND c_region = 'AMERICA'
  173.   AND s_region = 'AMERICA'
  174.   AND (
  175.             d_year = 1997
  176.         OR d_year = 1998
  177.     )
  178.   AND (
  179.             p_mfgr = 'MFGR#1'
  180.         OR p_mfgr = 'MFGR#2'
  181.     )
  182. GROUP BY d_year, s_nation, p_category
  183. ORDER BY d_year, s_nation, p_category;
  184. --Q4.3
  185. SELECT
  186.     d_year,
  187.     s_city,
  188.     p_brand,
  189.     SUM(lo_revenue - lo_supplycost) AS PROFIT
  190. FROM dates, customer, supplier, part, lineorder
  191. WHERE
  192.     lo_custkey = c_custkey
  193.   AND lo_suppkey = s_suppkey
  194.   AND lo_partkey = p_partkey
  195.   AND lo_orderdate = d_datekey
  196.   AND s_nation = 'UNITED STATES'
  197.   AND (
  198.             d_year = 1997
  199.         OR d_year = 1998
  200.     )
  201.   AND p_category = 'MFGR#14'
  202. GROUP BY d_year, s_city, p_brand
  203. ORDER BY d_year, s_city, p_brand;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表