--
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements.  See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License.  You may obtain a copy of the License at
--
--    http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-- q58 --
with ss_items as (
  select
    i_item_id item_id,
    sum(ss_ext_sales_price) ss_item_rev
  from
    store_sales,
    item,
    date_dim
  where
    ss_item_sk = i_item_sk
    and d_date in (
      select
        d_date
      from
        date_dim
      where
        d_week_seq = (
          select
            d_week_seq
          from
            date_dim
          where
            d_date = '1998-02-19'
        )
    )
    and ss_sold_date_sk = d_date_sk
  group by
    i_item_id
),
cs_items as (
  select
    i_item_id item_id,
    sum(cs_ext_sales_price) cs_item_rev
  from
    catalog_sales,
    item,
    date_dim
  where
    cs_item_sk = i_item_sk
    and d_date in (
      select
        d_date
      from
        date_dim
      where
        d_week_seq = (
          select
            d_week_seq
          from
            date_dim
          where
            d_date = '1998-02-19'
        )
    )
    and cs_sold_date_sk = d_date_sk
  group by
    i_item_id
),
ws_items as (
  select
    i_item_id item_id,
    sum(ws_ext_sales_price) ws_item_rev
  from
    web_sales,
    item,
    date_dim
  where
    ws_item_sk = i_item_sk
    and d_date in (
      select
        d_date
      from
        date_dim
      where
        d_week_seq = (
          select
            d_week_seq
          from
            date_dim
          where
            d_date = '1998-02-19'
        )
    )
    and ws_sold_date_sk = d_date_sk
  group by
    i_item_id
)
select
  ss_items.item_id,
  ss_item_rev,
  ss_item_rev / ((ss_item_rev + cs_item_rev + ws_item_rev) / 3) * 100 ss_dev,
  cs_item_rev,
  cs_item_rev / ((ss_item_rev + cs_item_rev + ws_item_rev) / 3) * 100 cs_dev,
  ws_item_rev,
  ws_item_rev / ((ss_item_rev + cs_item_rev + ws_item_rev) / 3) * 100 ws_dev,
  (ss_item_rev + cs_item_rev + ws_item_rev) / 3 average
from
  ss_items,
  cs_items,
  ws_items
where
  ss_items.item_id = cs_items.item_id
  and ss_items.item_id = ws_items.item_id
  and ss_item_rev between 0.9 * cs_item_rev
  and 1.1 * cs_item_rev
  and ss_item_rev between 0.9 * ws_item_rev
  and 1.1 * ws_item_rev
  and cs_item_rev between 0.9 * ss_item_rev
  and 1.1 * ss_item_rev
  and cs_item_rev between 0.9 * ws_item_rev
  and 1.1 * ws_item_rev
  and ws_item_rev between 0.9 * ss_item_rev
  and 1.1 * ss_item_rev
  and ws_item_rev between 0.9 * cs_item_rev
  and 1.1 * cs_item_rev
order by
  item_id,
  ss_item_rev
limit
  100;
