我正在努力解决一个sql问题,我就是搞不懂。我得数一下喜欢两种食物的人数。
我有一个表显示用户的id,还有一个列指示他们喜欢什么类型的食物。ID可能是重复的,因为一个人可能喜欢不止一种食物。我还有一个显示用户ID的表格和一个列,显示他们喜欢什么类型的饮料。同样,用户id可能是重复的。
有了这两个表,我必须创建一个表来计算喜欢某一类型食物的人数,计算喜欢某一类型饮料的人数,并计算喜欢这一对的人数。下面是我期望得到的一个例子:
foods . --------- drinks --------- count_food ------- count_drink -------count_combination
hamburger coke . 17 . 67 21
pizza coke . 45 67 8
chicken coke 21 67 25
到目前为止,我已经创建了foods,drinks,count\u food和count\u drink列。我使用交叉连接函数创建foods and drinks列,并使用count函数填充count\u food and count drinks列。然而,我被困在计数组合列。我只是不知道怎么做。这可以通过交叉验证连接来完成吗?
感谢您的帮助:)
1条答案
按热度按时间prdp8dxp1#
既然你在这个问题上提供了你想要的结果,我就用示例数据重新创建了你的案例。
为了达到最终的结果,我已经完成了你提到的所有步骤:数一数只喜欢一种饮料的人,数一数只喜欢一种食物的人,然后数一数喜欢这种饮料和食物的人。
下面是示例数据和我采取的步骤,
以及输出,
首先,请注意交叉连接为我们提供了
foods
以及drinks
. 因此,在创建最终输出时使用左连接。然后,注意like_both
表中有2个用户喜欢可口可乐和汉堡,1个用户喜欢可口可乐和比萨饼,0个用户喜欢可口可乐和鸡肉。因此,田地foods
以及drinks
用作将此表与连接的主键food_drink_only
table。因此,数据被放置在正确的食物和饮料组合中。