import file=tpch_schema
----

import file=tpch_stats
----

# --------------------------------------------------
# Q4
# Order Priority Checking
# Determines how well the order priority system is working and gives an
# assessment of customer satisfaction.
#
# Counts the number of orders ordered in a given quarter of a given year in
# which at least one lineitem was received by the customer later than its
# committed date. The query lists the count of such orders for each order
# priority sorted in ascending priority order.
# --------------------------------------------------
stats-quality database=tpch set=save_tables_prefix=q4
SELECT
    o_orderpriority,
    count(*) AS order_count
FROM
    orders
WHERE
    o_orderdate >= DATE '1993-07-01'
    AND o_orderdate < DATE '1993-07-01' + INTERVAL '3' MONTH
    AND EXISTS (
        SELECT
            *
        FROM
            lineitem
        WHERE
            l_orderkey = o_orderkey
            AND l_commitDATE < l_receiptdate
    )
GROUP BY
    o_orderpriority
ORDER BY
    o_orderpriority;
----
----
sort
 ├── save-table-name: q4_sort_1
 ├── columns: o_orderpriority:6(char!null) order_count:31(int!null)
 ├── stats: [rows=5, distinct(6)=5, null(6)=0, distinct(31)=5, null(31)=0]
 ├── key: (6)
 ├── fd: (6)-->(31)
 ├── ordering: +6
 └── group-by (hash)
      ├── save-table-name: q4_group_by_2
      ├── columns: o_orderpriority:6(char!null) count_rows:31(int!null)
      ├── grouping columns: o_orderpriority:6(char!null)
      ├── stats: [rows=5, distinct(6)=5, null(6)=0, distinct(31)=5, null(31)=0]
      ├── key: (6)
      ├── fd: (6)-->(31)
      ├── semi-join (lookup lineitem)
      │    ├── save-table-name: q4_lookup_join_3
      │    ├── columns: o_orderkey:1(int!null) o_orderdate:5(date!null) o_orderpriority:6(char!null)
      │    ├── key columns: [1] = [12]
      │    ├── stats: [rows=51977.27, distinct(1)=51977.3, null(1)=0, distinct(5)=92, null(5)=0, distinct(6)=5, null(6)=0]
      │    ├── key: (1)
      │    ├── fd: (1)-->(5,6)
      │    ├── index-join orders
      │    │    ├── save-table-name: q4_index_join_4
      │    │    ├── columns: o_orderkey:1(int!null) o_orderdate:5(date!null) o_orderpriority:6(char!null)
      │    │    ├── stats: [rows=51977.27, distinct(1)=51977.3, null(1)=0, distinct(5)=92, null(5)=0, distinct(6)=5, null(6)=0]
      │    │    │   histogram(5)=  0       0        627.27      900       6300      1200      6750      600       7050      900       7050      450       6900      1200      6750      600       4112.5     587.5
      │    │    │                <--- '1993-06-30' -------- '1993-07-02' ------ '1993-07-16' ------ '1993-07-29' ------ '1993-08-12' ------ '1993-08-25' ------ '1993-09-07' ------ '1993-09-22' -------- '1993-09-30'
      │    │    ├── key: (1)
      │    │    ├── fd: (1)-->(5,6)
      │    │    └── scan orders@o_od
      │    │         ├── save-table-name: q4_scan_5
      │    │         ├── columns: o_orderkey:1(int!null) o_orderdate:5(date!null)
      │    │         ├── constraint: /5/1: [/'1993-07-01' - /'1993-09-30']
      │    │         ├── stats: [rows=51977.27, distinct(1)=51977.3, null(1)=0, distinct(5)=92, null(5)=0]
      │    │         │   histogram(1)=  0           0            0 0.034651 256.66 0.034651 253.92 0.034651 268.51 0.034651 257.6 0.034651 278.25 0.034651 251.77 0.034651 257.8 0.034651 271.11 0.034651 260.82 0.034651 261.75 0.034651 257.35 0.034651 259.57 0.034651 263.21 0.034651 260.85 0.034651 264.77 0.034651 263.14 0.034651 255.9 0.034651 267.3 0.034651 256.76 0.034651 251.22 0.034651 260.54 0.034651 257.63 0.034651 262.52 0.034651 258.91 0.034651 253.06 0.034651 246.37 0.034651 264.98 0.034651 264.04 0.034651 262.65 0.034651 259.54 0.034651 256.76 0.034651 264.04 0.034651 270.49 0.034651  257.08 0.034651  258.32 0.034651  265.15 0.034651  256.69 0.034651  252.22 0.034651  256.52 0.034651  255.59 0.034651  255.59 0.034651  260.51 0.034651  264.28 0.034651  265.98 0.034651  258.88 0.034651  254.79 0.034651  263.28 0.034651  265.08 0.034651  260.23 0.034651  253.68 0.034651  252.54 0.034651  255.24 0.034651  255.79 0.034651  259.15 0.034651  260.82 0.034651  250.67 0.034651  266.02 0.034651  256.45 0.034651  268.2 0.034651  264.7 0.034651  260.44 0.034651  249.9 0.034651  250.6 0.034651  249.31 0.034651  249.07 0.034651  273.26 0.034651  255.03 0.034651  253.02 0.034651  259.67 0.034651  260.92 0.034651  261.93 0.034651  247.72 0.034651  257.73 0.034651  254.27 0.034651  252.95 0.034651  266.26 0.034651  257.49 0.034651  251.32 0.034651  257.84 0.034651  258.77 0.034651  266.64 0.034651  260.89 0.034651  257.87 0.034651  266.64 0.034651  268.13 0.034651  260.71 0.034651  256.45 0.034651  260.71 0.034651  266.85 0.034651  248 0.034651  254.79 0.034651  255.03 0.034651  254.16 0.034651  257.98 0.034651  269.13 0.034651  265.98 0.034651  260.3 0.034651  263.94 0.034651  253.26 0.034651  263.14 0.034651  252.85 0.034651  261.89 0.034651  257.01 0.034651  263.83 0.034651  257.18 0.034651  253.75 0.034651  262.83 0.034651  267.75 0.034651  259.74 0.034651  257.63 0.034651  254.27 0.034651  258.18 0.034651  262.55 0.034651  251.08 0.034651  264.25 0.034651  268.51 0.034651  257.04 0.034651  266.88 0.034651  257.73 0.034651  254.55 0.034651  260.51 0.034651  264.11 0.034651  255.03 0.034651  256.21 0.034651  264.49 0.034651  267.37 0.034651  261.93 0.034651  254.72 0.034651  261.89 0.034651  256.45 0.034651  252.88 0.034651  272.91 0.034651  255.2 0.034651  254.1 0.034651  258.46 0.034651  258.91 0.034651  262.13 0.034651  260.71 0.034651  251.95 0.034651  253.3 0.034651  257.08 0.034651  275.82 0.034651  255.83 0.034651  260.16 0.034651  260.75 0.034651  262.2 0.034651  267.02 0.034651  271.73 0.034651  259.33 0.034651  266.33 0.034651  263.56 0.034651  266.05 0.034651  265.01 0.034651  276.72 0.034651  272.36 0.034651  265.91 0.034651  267.96 0.034651  259.95 0.034651  259.85 0.034651  263.24 0.034651  262.41 0.034651  271.98 0.034651  262.24 0.034651  261.61 0.034651  259.67 0.034651  272.7 0.034651  260.19 0.034651  264.28 0.034651  269.41 0.034651  274.05 0.034651  259.95 0.034651  271.73 0.034651  261.37 0.034651  264.18 0.034651  260.71 0.034651  261.58 0.034651  276.45 0.034651  262.31 0.034651  274.33 0.034651  263.83 0.034651  273.19 0.034651  262.65 0.034651  279.88 0.034651  266.78 0.034651  264.59 0.034651  260.96 0.034651  260.44 0.034651  265.91 0.034651  269.65 0.034651  266.78 0.034651  259.29 0.034651  270.49 0.034651  269.41 0.034651  265.36 0.034651  265.29 0.034651  262.65 0.034651  260.12 0.034651  268.09 0.034651  262.83 0.034651  0           0
      │    │         │                <--- -9223372036854775808 ---- 1505 --------- 29025 --------- 54400 --------- 91106 -------- 119366 -------- 163554 -------- 187236 ------- 215651 -------- 254373 -------- 285123 -------- 316614 -------- 344678 -------- 374465 -------- 407078 -------- 437861 -------- 471683 -------- 504230 ------- 531168 ------- 566951 -------- 594561 -------- 617825 -------- 648358 -------- 676640 -------- 708706 -------- 737986 -------- 762690 -------- 782081 -------- 816064 -------- 849318 -------- 881511 -------- 911271 -------- 938885 -------- 972135 -------- 1010370 -------- 1038212 -------- 1067041 -------- 1101158 -------- 1128704 -------- 1152742 -------- 1180165 -------- 1206852 -------- 1233537 -------- 1264064 -------- 1297504 -------- 1332260 -------- 1361504 -------- 1387553 -------- 1420224 -------- 1454275 -------- 1484580 -------- 1509766 -------- 1534050 -------- 1560452 -------- 1587299 -------- 1616771 -------- 1647526 -------- 1670343 -------- 1705121 -------- 1732486 ------- 1768967 ------- 1802725 -------- 1833189 ------- 1855398 ------- 1878146 -------- 1899877 -------- 1921414 -------- 1961765 -------- 1988000 -------- 2012672 -------- 2042529 -------- 2073381 -------- 2104999 -------- 2125477 -------- 2153825 -------- 2179462 -------- 2204065 -------- 2239044 -------- 2267205 -------- 2290530 -------- 2318977 -------- 2348134 -------- 2383399 -------- 2414215 -------- 2442695 -------- 2477955 -------- 2514372 -------- 2545062 -------- 2572418 -------- 2603108 -------- 2638534 ----- 2659232 -------- 2685286 -------- 2711527 -------- 2737088 -------- 2765639 -------- 2802818 -------- 2837570 ------- 2867911 -------- 2901088 -------- 2925954 -------- 2958501 -------- 2983042 -------- 3014626 -------- 3042406 -------- 3075489 -------- 3103425 -------- 3128673 -------- 3160994 -------- 3197125 -------- 3227043 -------- 3255328 -------- 3280965 -------- 3309669 -------- 3341767 -------- 3364898 -------- 3398305 -------- 3435008 -------- 3462818 -------- 3498272 -------- 3526631 -------- 3552485 -------- 3583014 -------- 3616322 -------- 3642566 -------- 3669732 -------- 3703330 -------- 3739170 -------- 3770791 -------- 3796804 -------- 3828387 -------- 3855751 -------- 3880321 -------- 3920422 ------- 3946818 ------- 3972322 -------- 4001250 -------- 4030533 -------- 4062306 -------- 4092992 -------- 4116803 ------- 4141697 -------- 4169536 -------- 4211878 -------- 4238753 -------- 4268994 -------- 4299686 ------- 4331525 -------- 4367079 -------- 4406277 -------- 4435878 -------- 4470914 -------- 4500294 -------- 4531617 -------- 4562114 -------- 4601666 -------- 4637856 -------- 4669060 -------- 4701861 -------- 4728416 -------- 4754881 -------- 4784001 -------- 4812482 -------- 4848389 -------- 4876741 -------- 4904612 -------- 4930945 ------- 4967397 -------- 4994146 -------- 5024099 -------- 5058023 -------- 5095527 -------- 5122081 -------- 5157798 -------- 5185472 -------- 5215332 -------- 5242497 -------- 5270338 -------- 5309699 -------- 5338112 -------- 5375843 -------- 5405441 -------- 5442277 -------- 5470945 -------- 5512930 -------- 5544807 -------- 5574980 -------- 5602340 -------- 5629280 -------- 5660482 -------- 5694599 -------- 5726466 -------- 5752519 -------- 5787268 -------- 5821185 -------- 5851973 -------- 5882689 -------- 5911363 -------- 5938052 -------- 5970949 -------- 5999748 --- 9223372036854775807
      │    │         │   histogram(5)=  0       0        627.27      900       6300      1200      6750      600       7050      900       7050      450       6900      1200      6750      600       4112.5     587.5
      │    │         │                <--- '1993-06-30' -------- '1993-07-02' ------ '1993-07-16' ------ '1993-07-29' ------ '1993-08-12' ------ '1993-08-25' ------ '1993-09-07' ------ '1993-09-22' -------- '1993-09-30'
      │    │         ├── key: (1)
      │    │         └── fd: (1)-->(5)
      │    └── filters
      │         └── l_commitdate:23 < l_receiptdate:24 [type=bool, outer=(23,24), constraints=(/23: (/NULL - ]; /24: (/NULL - ])]
      └── aggregations
           └── count-rows [as=count_rows:31, type=int]

----Stats for q4_sort_1----
column_names       row_count  distinct_count  null_count
{o_orderpriority}  5          5               0
{order_count}      5          5               0
~~~~
column_names       row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{o_orderpriority}  5.00           1.00           5.00                1.00                0.00            1.00
{order_count}      5.00           1.00           5.00                1.00                0.00            1.00

----Stats for q4_group_by_2----
column_names       row_count  distinct_count  null_count
{count_rows}       5          5               0
{o_orderpriority}  5          5               0
~~~~
column_names       row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{count_rows}       5.00           1.00           5.00                1.00                0.00            1.00
{o_orderpriority}  5.00           1.00           5.00                1.00                0.00            1.00

----Stats for q4_lookup_join_3----
column_names       row_count  distinct_count  null_count
{o_orderdate}      52523      92              0
{o_orderkey}       52523      52442           0
{o_orderpriority}  52523      5               0
~~~~
column_names       row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{o_orderdate}      51977.00       1.01           92.00               1.00                0.00            1.00
{o_orderkey}       51977.00       1.01           51977.00            1.01                0.00            1.00
{o_orderpriority}  51977.00       1.01           5.00                1.00                0.00            1.00

----Stats for q4_index_join_4----
column_names       row_count  distinct_count  null_count
{o_orderdate}      57218      92              0
{o_orderkey}       57218      57218           0
{o_orderpriority}  57218      5               0
~~~~
column_names       row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{o_orderdate}      51977.00       1.10           92.00               1.00                0.00            1.00
{o_orderkey}       51977.00       1.10           51977.00            1.10                0.00            1.00
{o_orderpriority}  51977.00       1.10           5.00                1.00                0.00            1.00

----Stats for q4_scan_5----
column_names   row_count  distinct_count  null_count
{o_orderdate}  57218      92              0
{o_orderkey}   57218      57218           0
~~~~
column_names   row_count_est  row_count_err  distinct_count_est  distinct_count_err  null_count_est  null_count_err
{o_orderdate}  51977.00       1.10           92.00               1.00                0.00            1.00
{o_orderkey}   51977.00       1.10           51977.00            1.10                0.00            1.00
----
----
