[英]How to count distinct values in a list
我在Snowflake中编写查询并且遇到了打嗝很新。 我试图计算一个项目出现在同一列的列表中的次数。
我能够使用flatten函数,然后尝试添加计数功能,没有运气。
这是我的数据的虚拟版本:
Ticket# Tasks
1 ["cut apple","peel orange","slice cheese"]
2 ["slice cheese","peel orange"]
3 ["cut apple"]
4 ["cut apple","slice cheese"]
5 ["cut apple", "chop kiwi"]
这就是我想要输出的样子:(希望以desc顺序自动填充不同的任务列表)
Tasks Quantity
Cut Apple 4
Slice Cheese 3
Peel Orange 2
Chop Kiwi 1
评论太长了,但指导你去研究,然后尝试编写一个示例查询。 虽然您有机会在学习的同时这样做,但我会研究数据规范化并调整“任务”列。
您应该有一个辅助查找表,其中包含主键ID和每个唯一任务的描述(您将在数据规范化中看到)。 因此,您可以从数据上下文到文档,我将提供布局示例,并了解它如何帮助您。
从查找任务表开始......
Tasks Table
TaskID TaskDescription
1 cut apple
2 peel orange
3 slice cheese
4 chop kiwi
然后,您将拥有另一个具有TicketID的表,第三个表显示每个TicketID的多个记录。
Ticket Table
TicketID ExPurchaseDate
1 someDate
2 sameDate
3 etc...
现在,每张票的详细信息表。
TicketTasks Table
TicketTaskID TicketID TaskID
1 1 1
2 1 2
3 1 3
4 2 3
5 2 2
6 3 1
7 4 1
7 4 3
8 5 1
9 5 4
尝试使用规范化消化这一些,然后研究用COUNT(*)和GROUP BY编写SQL查询。 非常乐意为您提供更多帮助,但希望此HELP可以为您提供指导。
步骤1:定义规范化数据模式并将模式放入数据库。
您的规范化数据模式可能如下所示:
第2步:添加您的数据
第3步:然后,您将能够使用带有DISTINCT的SQL COUNT来查找数据表中的唯一行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.