簡體   English   中英

如何計算列表中的不同值

[英]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來查找數據表中的唯一行

帶有DISTINCT的SQL COUNT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM