Как посчитать разные значения в списке - PullRequest
0 голосов
/ 02 мая 2019

Я довольно новичок в написании запросов в Snowflake и столкнулся с ошибкой.Я пытаюсь подсчитать, сколько раз элемент появляется в списке все в одном столбце.

Я смог использовать функцию выравнивания, а затем безуспешно пытался добавить функцию подсчета.

Вот фиктивная версия моих данных:

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"]

Вот как я хочу, чтобы выходные данные выглядели так: (надеюсь, автоматическое заполнение отдельного списка задач в порядке убывания)

Tasks               Quantity
Cut Apple               4
Slice Cheese            3
Peel Orange             2
Chop Kiwi               1

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Шаг 1. Определите нормализованную схему данных и поместите ее в базу данных.

Ваша нормализованная схема данных может выглядеть примерно так:

enter image description here

Шаг 2: добавьте свои данные

Шаг 3: Затем вы сможете использовать SQL COUNT с DISTINCT для поиска уникальных строк в ваших таблицах данных

SQL COUNT с DISTINCT

0 голосов
/ 02 мая 2019

Слишком долго для комментария, но руководство для вас, чтобы посмотреть, а затем попытаться написать пример запроса.Хотя у вас есть возможность сделать это во время обучения, я бы посмотрел на Нормализация данных и скорректировал ваш столбец «Задачи».

У вас должна быть вторичная поисковая таблица с идентификатором первичного ключаи описание каждой уникальной задачи (вы увидите в нормализации данных).Таким образом, вы можете следовать из контекста данных к документу, я предоставлю примеры макетов и посмотрю, как это вам поможет.

Начиная с таблицы задач поиска ...

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

Попробуйтедайджест это некоторые с нормализацией, а затем изучить написание SQL-запроса с COUNT (*) и GROUP BY.Более чем рад помочь вам после этого, но надеюсь, что эти ПОМОЩИ помогут вам.

...