【发布时间】:2020-07-27 11:20:14
【问题描述】:
我有一张这样的桌子
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
我想要一个像下面这样的表格:
- 我想统计有多少项目包含查询特定关键字下的关键字(不完全匹配)。在 Excel 中,它使用的是 COUNTIFS(item_name,"(query name)", array_item_cat, query_cat)
- 我想汇总在包含查询特定关键字下的关键字的商品下销售的商品总数(不完全匹配)。在 Excel 中,它使用的是 SUMIFS(array_item_sold,item_name,"(query name)", array_item_cat, query_cat)
- 我想在 CONTAINS 查询特定关键字(不完全匹配)下的关键字的项目下总计剩余可用库存。在 Excel 中,它使用的是 SUMIFS(array_stock_avail,item_name,"(query 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 的新手,请放过我 :(
【问题讨论】:
-
您正在谈论将 something 与关键字匹配,但我只是不明白与什么匹配。你在说什么关键词?他们来自哪里?
标签: mysql sql excel sumifs case-when