创建一个新表,其中包含另一列的值计数列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个新表,其中包含另一列的值计数列相关的知识,希望对你有一定的参考价值。

我有一个表aisle_list,其中包含order_id和aisle_id列。 以下是一个例子:

order_id aisle_id
1        21
1        24
1        83
1        95
1        108
1        120
36       0 
36       2

我想创建一个新表,其中的列列出了每个order_id的唯一aisle_ids计数的计数,其中count为4,5或6.所以我需要有一个嵌套选择。

CREATE TABLE sample_path AS
SELECT a.order_id, a.aisle_id, x.count_num_aisles
FROM aisle_list as a, 
(SELECT count(*) as count_num_aisles FROM aisle_list
GROUP BY order_id) as x
WHERE count_num_aisles IN (4, 5, 6);

期望的结果:

order_id aisle_id count_num_aisles
1        21       6
1        24       6
1        83       6
1        95       6
1        108      6
1        120      6

该查询将永远运行。有人可以提供解决方案吗?

答案

为什么不使用group byhaving

SELECT a.order_id, count(distinct aisle_id) as num_aisles
FROM aisle_list a
GROUP BY a.order_id
HAVING count(distinct aisle_id) BETWEEN 4 and 6;

以上是关于创建一个新表,其中包含另一列的值计数列的主要内容,如果未能解决你的问题,请参考以下文章

R:使用另一列的值创建列-1

根据不同数据类型的另一列设置一列的默认值

Python-根据另一列的更改创建一个计数器列,然后再次启动计数器

Scala Spark Dataframe 创建一个新列,其中包含另一列的最大先前值和当前值

从另一列的子字符串更新一列

SQL - 为给定列中的值获取另一列的值