| /* | |
| * 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. | |
| */ | |
| with ss as | |
| (select s_store_sk, | |
| sum(ss_ext_sales_price) as sales, | |
| sum(ss_net_profit) as profit | |
| from store_sales, | |
| date_dim, | |
| store | |
| where ss_sold_date_sk = d_date_sk | |
| and d_date between cast('2000-08-23' as date) | |
| and (cast('2000-08-23' as date) + interval '30' day) | |
| and ss_store_sk = s_store_sk | |
| group by s_store_sk) | |
| , | |
| sr as | |
| (select s_store_sk, | |
| sum(sr_return_amt) as rets, | |
| sum(sr_net_loss) as profit_loss | |
| from store_returns, | |
| date_dim, | |
| store | |
| where sr_returned_date_sk = d_date_sk | |
| and d_date between cast('2000-08-23' as date) | |
| and (cast('2000-08-23' as date) + interval '30' day) | |
| and sr_store_sk = s_store_sk | |
| group by s_store_sk), | |
| cs as | |
| (select cs_call_center_sk, | |
| sum(cs_ext_sales_price) as sales, | |
| sum(cs_net_profit) as profit | |
| from catalog_sales, | |
| date_dim | |
| where cs_sold_date_sk = d_date_sk | |
| and d_date between cast('2000-08-23' as date) | |
| and (cast('2000-08-23' as date) + interval '30' day) | |
| group by cs_call_center_sk | |
| ), | |
| cr as | |
| (select | |
| sum(cr_return_amount) as rets, | |
| sum(cr_net_loss) as profit_loss | |
| from catalog_returns, | |
| date_dim | |
| where cr_returned_date_sk = d_date_sk | |
| and d_date between cast('2000-08-23' as date) | |
| and (cast('2000-08-23' as date) + interval '30' day) | |
| ), | |
| ws as | |
| ( select wp_web_page_sk, | |
| sum(ws_ext_sales_price) as sales, | |
| sum(ws_net_profit) as profit | |
| from web_sales, | |
| date_dim, | |
| web_page | |
| where ws_sold_date_sk = d_date_sk | |
| and d_date between cast('2000-08-23' as date) | |
| and (cast('2000-08-23' as date) + interval '30' day) | |
| and ws_web_page_sk = wp_web_page_sk | |
| group by wp_web_page_sk), | |
| wr as | |
| (select wp_web_page_sk, | |
| sum(wr_return_amt) as rets, | |
| sum(wr_net_loss) as profit_loss | |
| from web_returns, | |
| date_dim, | |
| web_page | |
| where wr_returned_date_sk = d_date_sk | |
| and d_date between cast('2000-08-23' as date) | |
| and (cast('2000-08-23' as date) + interval '30' day) | |
| and wr_web_page_sk = wp_web_page_sk | |
| group by wp_web_page_sk) | |
| select channel | |
| , id | |
| , sum(sales) as sales | |
| , sum(rets) as rets | |
| , sum(profit) as profit | |
| from | |
| (select 'store channel' as channel | |
| , ss.s_store_sk as id | |
| , sales | |
| , coalesce( rets, 0) as rets | |
| , (profit - coalesce(profit_loss,0)) as profit | |
| from ss left join sr | |
| on ss.s_store_sk = sr.s_store_sk | |
| union all | |
| select 'catalog channel' as channel | |
| , cs_call_center_sk as id | |
| , sales | |
| , rets | |
| , (profit - profit_loss) as profit | |
| from cs | |
| , cr | |
| union all | |
| select 'web channel' as channel | |
| , ws.wp_web_page_sk as id | |
| , sales | |
| , coalesce(rets, 0) rets | |
| , (profit - coalesce(profit_loss,0)) as profit | |
| from ws left join wr | |
| on ws.wp_web_page_sk = wr.wp_web_page_sk | |
| ) x | |
| group by rollup (channel, id) | |
| order by channel | |
| ,id | |
| LIMIT 100 |