import file=tpch_schema
----

import file=tpch_stats
----

# --------------------------------------------------
# Q11
# Important Stock Identification
# Finds the most important subset of suppliers' stock in a given nation.
#
# Finds, from scanning the available stock of suppliers in a given nation, all
# the parts that represent a significant percentage of the total value of all
# available parts. The query displays the part number and the value of those
# parts in descending order of value.
# --------------------------------------------------
stats-quality database=tpch set=save_tables_prefix=q11
SELECT
    ps_partkey,
    sum(ps_supplycost * ps_availqty::float) AS value
FROM
    partsupp,
    supplier,
    nation
WHERE
    ps_suppkey = s_suppkey
    AND s_nationkey = n_nationkey
    AND n_name = 'GERMANY'
GROUP BY
    ps_partkey HAVING
        sum(ps_supplycost * ps_availqty::float) > (
            SELECT
                sum(ps_supplycost * ps_availqty::float) * 0.0001
            FROM
                partsupp,
                supplier,
                nation
            WHERE
                ps_suppkey = s_suppkey
                AND s_nationkey = n_nationkey
                AND n_name = 'GERMANY'
        )
ORDER BY
    value DESC;
----
----
sort
 ├── save-table-name: q11_sort_1
 ├── columns: ps_partkey:1(int!null) value:24(float!null)
 ├── immutable
 ├── stats: [rows=9927.829, distinct(1)=9927.83, null(1)=0, distinct(24)=9927.83, null(24)=0]
 ├── key: (1)
 ├── fd: (1)-->(24)
 ├── ordering: -24
 └── select
      ├── save-table-name: q11_select_2
      ├── columns: ps_partkey:1(int!null) sum:24(float!null)
      ├── immutable
      ├── stats: [rows=9927.829, distinct(1)=9927.83, null(1)=0, distinct(24)=9927.83, null(24)=0]
      ├── key: (1)
      ├── fd: (1)-->(24)
      ├── group-by (hash)
      │    ├── save-table-name: q11_group_by_3
      │    ├── columns: ps_partkey:1(int!null) sum:24(float!null)
      │    ├── grouping columns: ps_partkey:1(int!null)
      │    ├── immutable
      │    ├── stats: [rows=29783.49, distinct(1)=29783.5, null(1)=0, distinct(24)=29783.5, null(24)=0]
      │    ├── key: (1)
      │    ├── fd: (1)-->(24)
      │    ├── project
      │    │    ├── save-table-name: q11_project_4
      │    │    ├── columns: column23:23(float!null) ps_partkey:1(int!null)
      │    │    ├── immutable
      │    │    ├── stats: [rows=32258.06, distinct(1)=29783.5, null(1)=0, distinct(23)=31617.9, null(23)=0]
      │    │    ├── inner-join (lookup partsupp)
      │    │    │    ├── save-table-name: q11_lookup_join_5
      │    │    │    ├── columns: ps_partkey:1(int!null) ps_suppkey:2(int!null) ps_availqty:3(int!null) ps_supplycost:4(float!null) s_suppkey:8(int!null) s_nationkey:11(int!null) n_nationkey:17(int!null) n_name:18(char!null)
      │    │    │    ├── key columns: [1 2] = [1 2]
      │    │    │    ├── lookup columns are key
      │    │    │    ├── stats: [rows=32258.06, distinct(1)=29783.5, null(1)=0, distinct(2)=399.935, null(2)=0, distinct(3)=9536.12, null(3)=0, distinct(4)=27589.3, null(4)=0, distinct(8)=399.935, null(8)=0, distinct(11)=1, null(11)=0, distinct(17)=1, null(17)=0, distinct(18)=1, null(18)=0, distinct(3,4)=31617.9, null(3,4)=0]
      │    │    │    ├── key: (1,8)
      │    │    │    ├── fd: ()-->(18), (1,2)-->(3,4), (8)-->(11), (11)==(17), (17)==(11), (2)==(8), (8)==(2)
      │    │    │    ├── inner-join (lookup partsupp@ps_sk)
      │    │    │    │    ├── save-table-name: q11_lookup_join_6
      │    │    │    │    ├── columns: ps_partkey:1(int!null) ps_suppkey:2(int!null) s_suppkey:8(int!null) s_nationkey:11(int!null) n_nationkey:17(int!null) n_name:18(char!null)
      │    │    │    │    ├── key columns: [8] = [2]
      │    │    │    │    ├── stats: [rows=32258.06, distinct(1)=29783.5, null(1)=0, distinct(2)=399.935, null(2)=0, distinct(8)=399.935, null(8)=0, distinct(11)=1, null(11)=0, distinct(17)=1, null(17)=0, distinct(18)=1, null(18)=0]
      │    │    │    │    ├── key: (1,8)
      │    │    │    │    ├── fd: ()-->(18), (8)-->(11), (11)==(17), (17)==(11), (2)==(8), (8)==(2)
      │    │    │    │    ├── inner-join (lookup supplier@s_nk)
      │    │    │    │    │    ├── save-table-name: q11_lookup_join_7
      │    │    │    │    │    ├── columns: s_suppkey:8(int!null) s_nationkey:11(int!null) n_nationkey:17(int!null) n_name:18(char!null)
      │    │    │    │    │    ├── key columns: [17] = [11]
      │    │    │    │    │    ├── stats: [rows=400, distinct(8)=399.935, null(8)=0, distinct(11)=1, null(11)=0, distinct(17)=1, null(17)=0, distinct(18)=1, null(18)=0]
      │    │    │    │    │    ├── key: (8)
      │    │    │    │    │    ├── fd: ()-->(18), (8)-->(11), (11)==(17), (17)==(11)
      │    │    │    │    │    ├── select
      │    │    │    │    │    │    ├── save-table-name: q11_select_8
      │    │    │    │    │    │    ├── columns: n_nationkey:17(int!null) n_name:18(char!null)
      │    │    │    │    │    │    ├── stats: [rows=1, distinct(17)=1, null(17)=0, distinct(18)=1, null(18)=0]
      │    │    │    │    │    │    │   histogram(18)=  0      1
      │    │    │    │    │    │    │                 <--- 'GERMANY'
      │    │    │    │    │    │    ├── key: (17)
      │    │    │    │    │    │    ├── fd: ()-->(18)
      │    │    │    │    │    │    ├── scan nation
      │    │    │    │    │    │    │    ├── save-table-name: q11_scan_9
      │    │    │    │    │    │    │    ├── columns: n_nationkey:17(int!null) n_name:18(char!null)
      │    │    │    │    │    │    │    ├── stats: [rows=25, distinct(17)=25, null(17)=0, distinct(18)=25, null(18)=0]
      │    │    │    │    │    │    │    │   histogram(17)=  0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1
      │    │    │    │    │    │    │    │                 <--- 0 --- 1 --- 2 --- 3 --- 4 --- 5 --- 6 --- 7 --- 8 --- 9 --- 10 --- 11 --- 12 --- 13 --- 14 --- 15 --- 16 --- 17 --- 18 --- 19 --- 20 --- 21 --- 22 --- 23 --- 24
      │    │    │    │    │    │    │    │   histogram(18)=  0      1      23      1
      │    │    │    │    │    │    │    │                 <--- 'ALGERIA' ---- 'VIETNAM'
      │    │    │    │    │    │    │    ├── key: (17)
      │    │    │    │    │    │    │    └── fd: (17)-->(18)
      │    │    │    │    │    │    └── filters
      │    │    │    │    │    │         └── n_name:18 = 'GERMANY' [type=bool, outer=(18), constraints=(/18: [/'GERMANY' - /'GERMANY']; tight), fd=()-->(18)]
      │    │    │    │    │    └── filters (true)
      │    │    │    │    └── filters (true)
      │    │    │    └── filters (true)
      │    │    └── projections
      │    │         └── ps_supplycost:4 * ps_availqty:3::FLOAT8 [as=column23:23, type=float, outer=(3,4), immutable]
      │    └── aggregations
      │         └── sum [as=sum:24, type=float, outer=(23)]
      │              └── column23:23 [type=float]
      └── filters
           └── gt [type=bool, outer=(24), immutable, subquery, constraints=(/24: (/NULL - ])]
                ├── sum:24 [type=float]
                └── subquery [type=float]
                     └── project
                          ├── save-table-name: q11_project_10
                          ├── columns: "?column?":49(float)
                          ├── cardinality: [1 - 1]
                          ├── immutable
                          ├── stats: [rows=1, distinct(49)=1, null(49)=0]
                          ├── key: ()
                          ├── fd: ()-->(49)
                          ├── scalar-group-by
                          │    ├── save-table-name: q11_scalar_group_by_11
                          │    ├── columns: sum:48(float)
                          │    ├── cardinality: [1 - 1]
                          │    ├── immutable
                          │    ├── stats: [rows=1, distinct(48)=1, null(48)=0]
                          │    ├── key: ()
                          │    ├── fd: ()-->(48)
                          │    ├── project
                          │    │    ├── save-table-name: q11_project_12
                          │    │    ├── columns: column47:47(float!null)
                          │    │    ├── immutable
                          │    │    ├── stats: [rows=32258.06, distinct(47)=31617.9, null(47)=0]
                          │    │    ├── inner-join (lookup partsupp)
                          │    │    │    ├── save-table-name: q11_lookup_join_13
                          │    │    │    ├── columns: ps_suppkey:26(int!null) ps_availqty:27(int!null) ps_supplycost:28(float!null) s_suppkey:32(int!null) s_nationkey:35(int!null) n_nationkey:41(int!null) n_name:42(char!null)
                          │    │    │    ├── key columns: [25 26] = [25 26]
                          │    │    │    ├── lookup columns are key
                          │    │    │    ├── stats: [rows=32258.06, distinct(26)=399.935, null(26)=0, distinct(27)=9536.12, null(27)=0, distinct(28)=27589.3, null(28)=0, distinct(32)=399.935, null(32)=0, distinct(35)=1, null(35)=0, distinct(41)=1, null(41)=0, distinct(42)=1, null(42)=0, distinct(27,28)=31617.9, null(27,28)=0]
                          │    │    │    ├── fd: ()-->(42), (32)-->(35), (35)==(41), (41)==(35), (26)==(32), (32)==(26)
                          │    │    │    ├── inner-join (lookup partsupp@ps_sk)
                          │    │    │    │    ├── save-table-name: q11_lookup_join_14
                          │    │    │    │    ├── columns: ps_partkey:25(int!null) ps_suppkey:26(int!null) s_suppkey:32(int!null) s_nationkey:35(int!null) n_nationkey:41(int!null) n_name:42(char!null)
                          │    │    │    │    ├── key columns: [32] = [26]
                          │    │    │    │    ├── stats: [rows=32258.06, distinct(25)=29783.5, null(25)=0, distinct(26)=399.935, null(26)=0, distinct(32)=399.935, null(32)=0, distinct(35)=1, null(35)=0, distinct(41)=1, null(41)=0, distinct(42)=1, null(42)=0]
                          │    │    │    │    ├── key: (25,32)
                          │    │    │    │    ├── fd: ()-->(42), (32)-->(35), (35)==(41), (41)==(35), (26)==(32), (32)==(26)
                          │    │    │    │    ├── inner-join (lookup supplier@s_nk)
                          │    │    │    │    │    ├── save-table-name: q11_lookup_join_15
                          │    │    │    │    │    ├── columns: s_suppkey:32(int!null) s_nationkey:35(int!null) n_nationkey:41(int!null) n_name:42(char!null)
                          │    │    │    │    │    ├── key columns: [41] = [35]
                          │    │    │    │    │    ├── stats: [rows=400, distinct(32)=399.935, null(32)=0, distinct(35)=1, null(35)=0, distinct(41)=1, null(41)=0, distinct(42)=1, null(42)=0]
                          │    │    │    │    │    ├── key: (32)
                          │    │    │    │    │    ├── fd: ()-->(42), (32)-->(35), (35)==(41), (41)==(35)
                          │    │    │    │    │    ├── select
                          │    │    │    │    │    │    ├── save-table-name: q11_select_16
                          │    │    │    │    │    │    ├── columns: n_nationkey:41(int!null) n_name:42(char!null)
                          │    │    │    │    │    │    ├── stats: [rows=1, distinct(41)=1, null(41)=0, distinct(42)=1, null(42)=0]
                          │    │    │    │    │    │    │   histogram(42)=  0      1
                          │    │    │    │    │    │    │                 <--- 'GERMANY'
                          │    │    │    │    │    │    ├── key: (41)
                          │    │    │    │    │    │    ├── fd: ()-->(42)
                          │    │    │    │    │    │    ├── scan nation
                          │    │    │    │    │    │    │    ├── save-table-name: q11_scan_17
                          │    │    │    │    │    │    │    ├── columns: n_nationkey:41(int!null) n_name:42(char!null)
                          │    │    │    │    │    │    │    ├── stats: [rows=25, distinct(41)=25, null(41)=0, distinct(42)=25, null(42)=0]
                          │    │    │    │    │    │    │    │   histogram(41)=  0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1   0  1
                          │    │    │    │    │    │    │    │                 <--- 0 --- 1 --- 2 --- 3 --- 4 --- 5 --- 6 --- 7 --- 8 --- 9 --- 10 --- 11 --- 12 --- 13 --- 14 --- 15 --- 16 --- 17 --- 18 --- 19 --- 20 --- 21 --- 22 --- 23 --- 24
                          │    │    │    │    │    │    │    │   histogram(42)=  0      1      23      1
                          │    │    │    │    │    │    │    │                 <--- 'ALGERIA' ---- 'VIETNAM'
                          │    │    │    │    │    │    │    ├── key: (41)
                          │    │    │    │    │    │    │    └── fd: (41)-->(42)
                          │    │    │    │    │    │    └── filters
                          │    │    │    │    │    │         └── n_name:42 = 'GERMANY' [type=bool, outer=(42), constraints=(/42: [/'GERMANY' - /'GERMANY']; tight), fd=()-->(42)]
                          │    │    │    │    │    └── filters (true)
                          │    │    │    │    └── filters (true)
                          │    │    │    └── filters (true)
                          │    │    └── projections
                          │    │         └── ps_supplycost:28 * ps_availqty:27::FLOAT8 [as=column47:47, type=float, outer=(27,28), immutable]
                          │    └── aggregations
                          │         └── sum [as=sum:48, type=float, outer=(47)]
                          │              └── column47:47 [type=float]
                          └── projections
                               └── sum:48 * 0.0001 [as="?column?":49, type=float, outer=(48), immutable]

----Stats for q11_sort_1----
column_names  row_count  distinct_count  null_count
{ps_partkey}  1048       1048            0
{value}       1048       1048            0
~~~~
column_names  row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{ps_partkey}  9928.00        9.47 <==       9928.00             9.47 <==            0.00            1.00
{value}       9928.00        9.47 <==       9928.00             9.47 <==            0.00            1.00

----Stats for q11_select_2----
column_names  row_count  distinct_count  null_count
{ps_partkey}  1048       1048            0
{sum}         1048       1048            0
~~~~
column_names  row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{ps_partkey}  9928.00        9.47 <==       9928.00             9.47 <==            0.00            1.00
{sum}         9928.00        9.47 <==       9928.00             9.47 <==            0.00            1.00

----Stats for q11_group_by_3----
column_names  row_count  distinct_count  null_count
{ps_partkey}  29818      29669           0
{sum}         29818      29818           0
~~~~
column_names  row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{ps_partkey}  29783.00       1.00           29783.00            1.00                0.00            1.00
{sum}         29783.00       1.00           29783.00            1.00                0.00            1.00

----Stats for q11_project_4----
column_names  row_count  distinct_count  null_count
{column23}    31680      31680           0
{ps_partkey}  31680      29669           0
~~~~
column_names  row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{column23}    32258.00       1.02           31618.00            1.00                0.00            1.00
{ps_partkey}  32258.00       1.02           29783.00            1.00                0.00            1.00

----Stats for q11_lookup_join_5----
column_names     row_count  distinct_count  null_count
{n_name}         31680      1               0
{n_nationkey}    31680      1               0
{ps_availqty}    31680      9556            0
{ps_partkey}     31680      29669           0
{ps_suppkey}     31680      396             0
{ps_supplycost}  31680      27350           0
{s_nationkey}    31680      1               0
{s_suppkey}      31680      396             0
~~~~
column_names     row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{n_name}         32258.00       1.02           1.00                1.00                0.00            1.00
{n_nationkey}    32258.00       1.02           1.00                1.00                0.00            1.00
{ps_availqty}    32258.00       1.02           9536.00             1.00                0.00            1.00
{ps_partkey}     32258.00       1.02           29783.00            1.00                0.00            1.00
{ps_suppkey}     32258.00       1.02           400.00              1.01                0.00            1.00
{ps_supplycost}  32258.00       1.02           27589.00            1.01                0.00            1.00
{s_nationkey}    32258.00       1.02           1.00                1.00                0.00            1.00
{s_suppkey}      32258.00       1.02           400.00              1.01                0.00            1.00

----Stats for q11_lookup_join_6----
column_names   row_count  distinct_count  null_count
{n_name}       31680      1               0
{n_nationkey}  31680      1               0
{ps_partkey}   31680      29669           0
{ps_suppkey}   31680      396             0
{s_nationkey}  31680      1               0
{s_suppkey}    31680      396             0
~~~~
column_names   row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{n_name}       32258.00       1.02           1.00                1.00                0.00            1.00
{n_nationkey}  32258.00       1.02           1.00                1.00                0.00            1.00
{ps_partkey}   32258.00       1.02           29783.00            1.00                0.00            1.00
{ps_suppkey}   32258.00       1.02           400.00              1.01                0.00            1.00
{s_nationkey}  32258.00       1.02           1.00                1.00                0.00            1.00
{s_suppkey}    32258.00       1.02           400.00              1.01                0.00            1.00

----Stats for q11_lookup_join_7----
column_names   row_count  distinct_count  null_count
{n_name}       396        1               0
{n_nationkey}  396        1               0
{s_nationkey}  396        1               0
{s_suppkey}    396        396             0
~~~~
column_names   row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{n_name}       400.00         1.01           1.00                1.00                0.00            1.00
{n_nationkey}  400.00         1.01           1.00                1.00                0.00            1.00
{s_nationkey}  400.00         1.01           1.00                1.00                0.00            1.00
{s_suppkey}    400.00         1.01           400.00              1.01                0.00            1.00

----Stats for q11_select_8----
column_names   row_count  distinct_count  null_count
{n_name}       1          1               0
{n_nationkey}  1          1               0
~~~~
column_names   row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{n_name}       1.00           1.00           1.00                1.00                0.00            1.00
{n_nationkey}  1.00           1.00           1.00                1.00                0.00            1.00

----Stats for q11_scan_9----
column_names   row_count  distinct_count  null_count
{n_name}       25         25              0
{n_nationkey}  25         25              0
~~~~
column_names   row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{n_name}       25.00          1.00           25.00               1.00                0.00            1.00
{n_nationkey}  25.00          1.00           25.00               1.00                0.00            1.00

----Stats for q11_project_10----
column_names  row_count  distinct_count  null_count
{?column?}    1          1               0
~~~~
column_names  row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{?column?}    1.00           1.00           1.00                1.00                0.00            1.00

----Stats for q11_scalar_group_by_11----
column_names  row_count  distinct_count  null_count
{sum}         1          1               0
~~~~
column_names  row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{sum}         1.00           1.00           1.00                1.00                0.00            1.00

----Stats for q11_project_12----
column_names  row_count  distinct_count  null_count
{column47}    31680      31680           0
~~~~
column_names  row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{column47}    32258.00       1.02           31618.00            1.00                0.00            1.00

----Stats for q11_lookup_join_13----
column_names     row_count  distinct_count  null_count
{n_name}         31680      1               0
{n_nationkey}    31680      1               0
{ps_availqty}    31680      9556            0
{ps_suppkey}     31680      396             0
{ps_supplycost}  31680      27350           0
{s_nationkey}    31680      1               0
{s_suppkey}      31680      396             0
~~~~
column_names     row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{n_name}         32258.00       1.02           1.00                1.00                0.00            1.00
{n_nationkey}    32258.00       1.02           1.00                1.00                0.00            1.00
{ps_availqty}    32258.00       1.02           9536.00             1.00                0.00            1.00
{ps_suppkey}     32258.00       1.02           400.00              1.01                0.00            1.00
{ps_supplycost}  32258.00       1.02           27589.00            1.01                0.00            1.00
{s_nationkey}    32258.00       1.02           1.00                1.00                0.00            1.00
{s_suppkey}      32258.00       1.02           400.00              1.01                0.00            1.00

----Stats for q11_lookup_join_14----
column_names   row_count  distinct_count  null_count
{n_name}       31680      1               0
{n_nationkey}  31680      1               0
{ps_partkey}   31680      29669           0
{ps_suppkey}   31680      396             0
{s_nationkey}  31680      1               0
{s_suppkey}    31680      396             0
~~~~
column_names   row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{n_name}       32258.00       1.02           1.00                1.00                0.00            1.00
{n_nationkey}  32258.00       1.02           1.00                1.00                0.00            1.00
{ps_partkey}   32258.00       1.02           29783.00            1.00                0.00            1.00
{ps_suppkey}   32258.00       1.02           400.00              1.01                0.00            1.00
{s_nationkey}  32258.00       1.02           1.00                1.00                0.00            1.00
{s_suppkey}    32258.00       1.02           400.00              1.01                0.00            1.00

----Stats for q11_lookup_join_15----
column_names   row_count  distinct_count  null_count
{n_name}       396        1               0
{n_nationkey}  396        1               0
{s_nationkey}  396        1               0
{s_suppkey}    396        396             0
~~~~
column_names   row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{n_name}       400.00         1.01           1.00                1.00                0.00            1.00
{n_nationkey}  400.00         1.01           1.00                1.00                0.00            1.00
{s_nationkey}  400.00         1.01           1.00                1.00                0.00            1.00
{s_suppkey}    400.00         1.01           400.00              1.01                0.00            1.00

----Stats for q11_select_16----
column_names   row_count  distinct_count  null_count
{n_name}       1          1               0
{n_nationkey}  1          1               0
~~~~
column_names   row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{n_name}       1.00           1.00           1.00                1.00                0.00            1.00
{n_nationkey}  1.00           1.00           1.00                1.00                0.00            1.00

----Stats for q11_scan_17----
column_names   row_count  distinct_count  null_count
{n_name}       25         25              0
{n_nationkey}  25         25              0
~~~~
column_names   row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{n_name}       25.00          1.00           25.00               1.00                0.00            1.00
{n_nationkey}  25.00          1.00           25.00               1.00                0.00            1.00
----
----
