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

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

这道题是最近参加某公司笔试题目遇到的,小弟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
    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

    点赞 评论
  • fxhu09
    fxhu09 2014-05-12 13:58

    某系统根据用户购买数据已经生成了同时购买同一类别下两个产品的数据,现需要使用该数据,生成同时购买同一类别下三个产品的数据.

    实在是不知所云。是不是发高烧了?
    这两个产品的数据怎么生成三个产品的数据?这是什么业务?

    点赞 评论
  • zgy52188
    zgy52188 2014-05-12 21:57

    你这个题描述的不是很清楚,如果题本身就这样,排除是错误或业务根本不对的情况来分析,我按我的理解说一下。
    根据已有的同时购买同一类2个产品的用户,生成含有同一类的第三个产品的,
    只能在同时购买同一类2个产品的用户去查询 这些用户中购买这一类第三个产品的用户。
    得出的就是同时购买同一类3个产品的用户。
    这样保证了类别、用户的条件筛选。

    但你这里有个矛盾的问题,ProductId1 < ProductId2,产品1与产品2都为字符类型,你只表明为产品id,那么如何满足ProductId1 < ProductId2?
    同理ProductId1<ProductId2<ProductId3。也为矛盾。

    点赞 评论
  • weixin_42509992
    婷婷 Tina 2014-05-13 11:15

    看着很迷糊,建议先把情况说清楚一些吧。

    点赞 评论

相关推荐