在 SQLite 中使用 CASE 语句和 SELECT 来排除显示某些结果
Using CASE statement along with SELECT in SQLite to exclude displaying certain results
我试图解决SQLite中“数据库中每个性别的人数,其中性别已知,显示每个性别的人数”的问题。我输入了一个查询
SELECT sex, COUNT(name) from employee_table GROUP BY sex ORDER BY sex DESC;
这是部分正确的,因为它在输出中显示了男性和女性的数量。但是,它也显示了未分类为男性或女性的空白条目的数量。
我必须停止显示空白条目的计数。我想为此,我必须使用 CASE 语句。我以不同的方式尝试了 CASE 语句。但这些都没有用。我尝试搜索互联网和堆栈溢出并尝试了这些方法。那些也没用。
如有任何帮助,我们将不胜感激。
谢谢,
理查德
您想 过滤 结果,而 case
表达式无法做到这一点。没有样本数据,很难确切地说表达式是什么,但也许:
SELECT sex, COUNT(name)
FROM employee_table
WHERE sex IS NOT NULL
GROUP BY sex
ORDER BY sex DESC;
如果“空白”结果确实是空字符串,则为:
WHERE sex <> ''
这也会过滤掉 NULL
个值。
或者如果你想要明确的值,那么你可以使用 IN
:
WHERE sex IN ('m', 'f')
我试图解决SQLite中“数据库中每个性别的人数,其中性别已知,显示每个性别的人数”的问题。我输入了一个查询
SELECT sex, COUNT(name) from employee_table GROUP BY sex ORDER BY sex DESC;
这是部分正确的,因为它在输出中显示了男性和女性的数量。但是,它也显示了未分类为男性或女性的空白条目的数量。
我必须停止显示空白条目的计数。我想为此,我必须使用 CASE 语句。我以不同的方式尝试了 CASE 语句。但这些都没有用。我尝试搜索互联网和堆栈溢出并尝试了这些方法。那些也没用。
如有任何帮助,我们将不胜感激。
谢谢, 理查德
您想 过滤 结果,而 case
表达式无法做到这一点。没有样本数据,很难确切地说表达式是什么,但也许:
SELECT sex, COUNT(name)
FROM employee_table
WHERE sex IS NOT NULL
GROUP BY sex
ORDER BY sex DESC;
如果“空白”结果确实是空字符串,则为:
WHERE sex <> ''
这也会过滤掉 NULL
个值。
或者如果你想要明确的值,那么你可以使用 IN
:
WHERE sex IN ('m', 'f')