SQL Countifs 和 Sumifs 函数

Posted

技术标签:

【中文标题】SQL Countifs 和 Sumifs 函数【英文标题】:SQL Countifs and Sumifs Function 【发布时间】: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 与关键字匹配,但我只是不明白与什么匹配。你在说什么关键词?他们来自哪里? 【参考方案1】:

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

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

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

【讨论】:

以上是关于SQL Countifs 和 Sumifs 函数的主要内容,如果未能解决你的问题,请参考以下文章

c++中怎么用一个函数读取不同的文件??!!

Excel SUMIFS 在一系列数字上,这些数字被格式化为字符串

将 SumIfs Excel 函数转换为 MySQL

Sumifs函数多条件求和的9个实例

lazarus 函数 eoln 怎么用?

如何用Get和Put函数(VB)