首页 > 解决方案 > 组值mysql

问题描述

假设我有一个格式为 [prodName, status] 的表日志

一个示例集是:

| ProdName |  Status
|-----------------------
|  AXD1    | 100
|  BL1     | 100
|  AXD2    | 300
|  BL2     | 300
|  AXD1    | 300
|  AXD2    | 100
|  BL1     | 100
|  BL1     | 100

我将按状态分组结果,其中 100 表示成功,300 表示不成功。所以结果是这样的。

| ProdName |  Success | Not
|-----------------------
|  AXD1    | 1        | 1
|  BL1     | 3        | 0
|  AXD2    | 1        | 1
|  BL2     | 0        | 1

标签: mysqlsql

解决方案


您可以使用case表达式来查找一行是否成功,然后计算它们:

SELECT   ProdName,
         COUNT(CASE Status WHEN 100 THEN 1 END) AS "Success",
         COUNT(CASE Status WHEN 300 THEN 1 END) AS "Not Success"
FROM     mytable
GROUP BY ProdName

推荐阅读