sql countifs和sumifs函数

8e2ybdfx  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(382)

我有一张这样的table

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

我想要一张如下的table:
我想计算在特定关键字(不完全匹配)下包含查询关键字的项目数。在excel中使用countifs(item\u name,“(query name)”,array\u item\u cat,query\u cat)
我想在包含特定关键字(不完全匹配)下的查询关键字的项目下合计销售的项目。在excel中使用sumifs(array\u item\u sell,item\u name,“(query name)”,array\u item\u cat,query\u cat)
我想在包含特定关键字(不完全匹配)下的查询关键字的项目下合计剩余可用库存。在excel中使用sumifs(array\u stock\u avail,item\u name,“(query name)”,array\u item\u cat,query\u cat)
这是我想要的table:

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,这样它不仅可以显示完全匹配的simple like,而且like需要使用通配符“%%”来处理任何包含查询逻辑的项名称,like函数与in或“-”中的函数相同,因为我没有使用通配符。
另一方面,我没有使用通配符,因为有数以百万计的数据查询和数以百万计的项,所以我希望它能为我自动计数和求和,而不是我必须使用通配符“%”逐个输入它。
有谁能帮我提出更好更准确的问题吗?我对使用sql很陌生,请原谅我:(

5m1hhzi4

5m1hhzi41#

你的逻辑有点难以理解。但你的结果表明你在寻找这样的东西:

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

这个逻辑可能就是你想要描述的。

相关问题