MySQL根据文本单词进行计数

标签 mysql sql mysql-workbench

因为我正在计算有多少个 SKU(基于每个 SKU),据我所知,SKU“H-ROOT-C”有 3 件商品已退款。

SELECT 
    sku,
    count(IF(transaction_type = 'Refund'AND amount_description = 'Principal' AND amount_type = 'ItemPrice', sku, 0)) AS 'refund_QTY_Order'
FROM
    settlements_qty_test
WHERE
    (sku NOT LIKE '%loc%'
        AND sku NOT LIKE 'isc%'
        AND sku NOT LIKE 'trek%')
GROUP BY SKU ='H-ROOT-C'
HAVING sku IS NOT NULL AND LENGTH(sku) > 0
ORDER BY refund_QTY_Order ASC

结果输出

'H-ROOT-C', '125'

我一直得到结果,因为所有退款计数为 125,因为我希望此搜索重点关注每组 SKU,而 h-root-C 应该是 3 件商品返回,而不是 125 件商品返回。我不需要所有 SKU 退款,我只想要这个 SKU='H-root-c'。

最佳答案

您可以将其简化为:

SELECT sku
       sum( (transaction_type = 'Refund' AND
             amount_description = 'Principal' AND
             amount_type = 'ItemPrice'
            )
           ) AS refund_QTY_Order
FROM settlements_qty_test
WHERE sku NOT LIKE '%loc%' AND
      sku NOT LIKE 'isc%' AND
      sku NOT LIKE 'trek%' AND
      LENGTH(sku) > 0
GROUP BY SKU
ORDER BY refund_QTY_Order ASC;

NULL的比较是多余的。我将条件逻辑留在了 SELECT 中,因此您将获得 0 值。

关于MySQL根据文本单词进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48081282/

相关文章:

Mysql:获取json数组长度并忽略空值

MySQL多表数据比较

java - 我无法使用 JSP 文件从 MySQL 数据库检索数据并收到 java.math.BigInteger cannot be cast to java.lang.Long 错误

mysql - 如何将数据复制并粘贴到 MySQL Workbench 表中?

java - Spring启动JDBC异常

java - QueryDsl 类未在 IntelliJ 中生成

java - netbeans显示/打印受min函数影响的一行mysql数据

mysql - 使用 Case When 语句查询获取 2 个不同条件下的 Id 计数

mysql - 在同一 sql 语句中使用 mysql 别名

mysql - 更新行,如果更新失败则删除同一行