mysql - SQL 查询计数 = 0/null

标签 mysql sql count

我有以下 MySql 表,其中包含大约 19000 个条目,如下所示:

ID      USER        FIELD1         FIELD2         SOMEINT   ERROR
1       name1       null           null           null      missing...
2       name1       value1         value2         3         validated!
3       name1       value3         wrongvalue1    null      syntax
4       name2       wrongvalue2    value4         null      syntax
etc...................................................................

我想要一个这样的列表:

USER    totalEntries     totalValid   totalMissing    totalSyntax
name1   3                1            1               1
name2   1                0            0               1
etc...................................................................

我对每一列都有一个这样的查询:

select user, count(user) valid from table where 
someint is not null group by user limit 0, 20000;
(total valid entries)

select user, count(*) totalEntries from table group by user
limit 0, 20000; (total entries)

select user, count(*) totalMissing from table where field1 is null or
field2 is null group by user limit 0, 20000; (total Missing entrie)

select user, count(*) syntax from table where error like 'syntax%'
group by user limit 0, 20000 (syntaxerror entries)

问题是“group by”没有将 count(...) 条目列为

USER     valid
...
name3    0

因此 4 个查询结果的行数不同。我怎么解决这个问题?

最佳答案

您正在尝试执行此操作:

SELECT user, COUNT(*) as totalEntries, 
    SUM(CASE WHEN someint IS NOT NULL THEN 1 ELSE 0 END),
    SUM(CASE WHEN field1 IS NULL OR field2 IS NULL THEN 1 ELSE 0 END),
    SUM(CASE WHEN error LIKE 'syntax%' THEN 1 ELSE 0 END)
FROM SomeTable
GROUP by user
  1. 用户名
  2. 用户的条目数
  3. NULL 某些 int 不同的条目的条目数
  4. 错误缺失的条目数`
  5. ERRORsyntax 的条目数

PD:也许您想在查询末尾添加LIMIT 0,20000。我没有这样做,因为我没有达到目的。

关于mysql - SQL 查询计数 = 0/null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25199529/

相关文章:

Mysql 查询学习天数

sql - Postgres/ANSI SQL 系统如何将 'count' 聚合与 GROUP BY 字段相关联

mysql - SQL从多列转换为少列?

mysql - ASP.NET核心: How to create a connection string on Macbook pro

php - 为什么这个查询总是在 phpmyadmin 中工作,但在我的 php pdo 代码上有时工作?

mysql - case语句中的select语句sql

c# - 为什么我的 SQL 查询在转换后比较日期时选择所有行?

sql - 我应该在 T-SQL 字符串中转义哪些特殊字符?

sql - 在 SQL Server 中计算日期和今天之间的天数?

php - 如何用破折号分解来自数据库的数据