【问题标题】:Using CASE statement along with SELECT in SQLite to exclude displaying certain results在 SQLite 中使用 CASE 语句和 SELECT 来排除显示某些结果
【发布时间】:2021-02-06 12:26:22
【问题描述】:

我试图在 SQLite 中解决“数据库中每种性别的人数,其中已知性别,显示针对每种性别的人数”的问题。我输入了一个查询

SELECT sex, COUNT(name) from employee_table GROUP BY sex ORDER BY sex DESC;

这是部分正确的,因为它显示了男性和女性的数量。但是,它也显示了既不是男性也不是女性的空白条目的数量。

我必须停止显示空白条目的计数。我想为此,我必须使用 CASE 语句。我以不同的方式尝试了 CASE 语句。但那些没有用。我尝试搜索互联网和堆栈溢出并尝试了这些方法。那些也没有用。

任何帮助将不胜感激。

谢谢, 理查德

【问题讨论】:

  • 我尝试搜索互联网和堆栈溢出并尝试了这些方法。您没有看到 WHERE 子句的使用?
  • 这是一个有趣的观点。实际上更糟。我不确定通过最后一次互联网搜索找到 WHERE 子句;但我多次使用它来解决几个问题而没有检查互联网。甚至最近就像昨天或前天一样。

标签: sql sqlite select group-by case


【解决方案1】:

您想要过滤结果,而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')

【讨论】:

  • 尽管您的第二选择为我提供了正确的输出,但我自己找到了更好的答案:使用 WHERE sex =='m' 或 sex =='f'。我自己没有回答我的问题;因为你的回答激发了我的灵感。还是谢谢。
猜你喜欢
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 2016-05-02
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多