TomAndRachel 2014-05-12 10:08
浏览 264
已采纳

一到笔试题,求思路。万分感谢。。

这道题是最近参加某公司笔试题目遇到的,小弟sql能力不是很强,所以求查询sql,还有的话,我的思路是用sql过滤出几十万条的数据,然后查询到服务器进行处理,是否还需要多线程来进行数据写入呢?

某系统根据用户购买数据已经生成了同时购买同一类别下两个产品的数据,现需要使用该数据,生成同时购买同一类别下三个产品的数据,请设计并简要实现:
说明:
1、表结构如下:
create table purchasetogether (
ProductId1 varchar(50) not null,
ProductId2 varchar(50) not null,
CategoryId int(10) not null,
CustomerCount int(10) not null,
CustomerIds text not null,
primary key (ProductId1, ProductId2),
key CategoryId (CategoryId)
); create table multipurchasetogether (
ProductId1 varchar(50) not null,
ProductId2 varchar(50) not null,
ProductId3 varchar(50) not null,
CategoryId int(10) not null,
CustomerCount int(10) not null,
CustomerIds text not null,
primary key (ProductId1, ProductId2, ProductId3),
key CategoryId (CategoryId)
);

ProductId1: 同时购买的第一个产品id,已有数据已经保证ProductId1 < ProductId2
ProductId2: 同时购买的第二个产品id
CategoryId: 产品类别id
CustomerCount: 同时购买ProductId1和ProductId2的用户数量
CustomerIds: 同时购买ProductId1和ProductId2的所有用户id列表,用户id间以逗号分隔

2、该表的数据量为千万或者上亿级,处理时需要按照每个产品类别(Category)进行,单个类别的数据量可能会达到百万级。设计和实现时可以只考虑处理配置的单个类别。
3、生成的数据放入multipurchasetogether表,表结构与purchasetogether类似,并且需要保证ProductId1<ProductId2<ProductId3。

  • 写回答

4条回答 默认 最新

  • bj123nimab 2014-05-14 18:07
    关注

    实际分析: 表multipurchasetogether中的数据肯定是从purchasetogether表中获取的,且由

    select a.p1,a.p2,b.p2 as p3 from purchasetogether as a
    join purchasetogether as b on b.p1=a.p1 and a.CategoryId=b.CategoryId and a.p2!=b.p2

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?