Функция SQL Countifs и Sumifs

У меня есть такая таблица

Queries          Query Cat.           Item Name          Item Cat.          Item Sold          Stock Avail.
iPhone 6         Mobile Phone         iPhone 6           Mobile Phone       20                 10
iPhone 6         Mobile Phone         iPhone 6 XS        Mobile Phone       10                 20
iPhone 6         Mobile Phone         iPhone 6 S         Mobile Phone       5                  20
iPhone 6         Phone Accessories    iPhone 6 S Case    Phone Accessories  200                100
iPhone 6         Phone Accessories    iPhone 6 Earphone  Earphone           150                200
iPhone 6         Phone Accessories    iPhone 6 Charger   Phone Wall Charger 100                250
iPhone 6         Mobile Phone         iPhone 6 S Plus    Mobile Phone       15                 15

И мне нужна таблица, как показано ниже, где:

  1. Я хочу подсчитать, сколько элементов СОДЕРЖИТ запросы ключевых слов по определенным ключевым словам (не с точным соответствием). В Excel использовалось COUNTIFS (имя_элемента, (имя запроса), array_item_cat, query_cat)
  2. Я хочу суммировать общее количество товаров, проданных по товару, который СОДЕРЖИТ запросы по ключевым словам по определенным ключевым словам (не с точным соответствием). В Excel использовалось СУММЕСЛИМН (проданный_элемент_массива, имя_элемента, (имя запроса), элемент_массива_кат, запрос_кат)
  3. Я хочу суммировать общий оставшийся доступный запас по элементу, который СОДЕРЖИТ запросы ключевых слов по определенным ключевым словам (не с точным соответствием). В Excel использовалось СУММЕСЛИМН (array_stock_avail, item_name, (имя запроса), array_item_cat, query_cat)

Это таблица, которую я хочу:

Queries           Query Cat.          Item Count          Total Item Sold           Total Stock
iPhone 6          Mobile Phone        4                   50                        65
iPhone 6          Phone Accessories   1                   200                       100

И я использовал эти запросы:

And I was using this queries:
SELECT  queries_keyword
        ,COUNT(CASE WHEN item_name LIKE queries_keyword AND item_cat = query_cat THEN 1 END) AS count_item_queries
        ,SUM(CASE WHEN item_name LIKE queries_keyword AND item_cat = query_cat THEN item_sold END) AS Total Item Sold
        ,SUM(CASE WHEN item_name LIKE queries_keyword AND item_cat = query_cat THEN stock_available END) AS Total Stock
FROM   my_table
GROUP BY queries_keyword

Я использовал LIKE, чтобы он не только показывал точное совпадение, как при использовании IN или =, но LIKE необходимо использовать подстановочный знак '%%' для работы с любым именем элемента, которое СОДЕРЖИТ, и выше логики запроса, LIKE функция становится такой же, как IN или - потому что я не использую подстановочные знаки.

Кстати, я не использую подстановочный знак из-за того, что существуют миллионы запросов к данным и миллионы элементов, поэтому я хочу, чтобы он автоматически подсчитывал и суммировал для меня, а не вводил его один за другим, используя подстановочный знак '%%'.

Может ли кто-нибудь помочь предложить лучший и точный запрос для этой проблемы? Я новичок в использовании SQL, избавьте меня :(


person Verrel Argo Baldi    schedule 27.07.2020    source источник
comment
Вы говорите о сопоставлении чего-то с ключевыми словами, но я просто не понимаю, что и чему сопоставляется. О каких ключевых словах вы говорите? Откуда они?   -  person Gordon Linoff    schedule 27.07.2020


Ответы (1)


Вашей логике довольно сложно следовать. Но ваши результаты показывают, что вы ищете что-то вроде этого:

select queries, queries_cat, sum(item_sold), sum(item_stock)
from t
where query_cat = item_cat
group by queries, queries_cat;

И эта логика может быть тем, что вы пытаетесь описать.

person Gordon Linoff    schedule 27.07.2020