使用的三个表如下:
items:商品详细信息表,即商品维度表,记录数100W左右。
item_orders:每日增加的订单记录,事实表,每日新增记录大约为100W。
orders:订单维度表,包含每一个订单实时的信息,记录数为1亿。
该查询实现这样的需求:查询2021年五一三天假期中满足一定条件购买次数TOP 100的商品,条件为:商品的类目属于指定四类,商品的订单状态是1、2两种并且这三天购买的人数大于1000。
SQL:
select * from bigdata_report_dev.bigdata_db_table_test,zhoucx_test.check1_mysql_batch
select t1.goods_id, t1.title, count(1) as ba from
items t1
join
item_orders t2
on t1.goods_id = t2.goods_id
where
t2.day >= '2021-04-29'
and
t2.day <= '2021-05-01'
and
t1.cat1_id in ('438', '437', '440', '381')
and
t2.order_id in (select order_id from orders where order_status in ('1','2'))
group by
t1.goods_id, t1.title
having
count(distinct t2.buy_account) > 1000
order by ba desc
limit 100
这个查询是一个典型的OLAP分析查询,从SQL结构上看,包括了多个join,子查询,过滤信息和聚合操作。



