如何在SQL中只计算1?
我正在尝试运行一份报告,以了解上个月有多少车辆需要维修,有多少车辆需要保养。如下图所示,如果车辆进行了维修,则为其分配了1,否则为0。这是我当前的尝试,它同时返回1和0,这是我不想要的。非常感谢您的帮助如何在SQL中只计算1?,sql,Sql,我正在尝试运行一份报告,以了解上个月有多少车辆需要维修,有多少车辆需要保养。如下图所示,如果车辆进行了维修,则为其分配了1,否则为0。这是我当前的尝试,它同时返回1和0,这是我不想要的。非常感谢您的帮助 有了显示的数据,您可以简单地使用sum()而不是count(): 这是因为值可能是0或1。换句话说,这些列被设计为可以为此目的进行汇总的标志 如果它们可以采用其他值,您可以使用以下内容: sum(case when repair = 1 then 1 else 0 end) as repair
有了显示的数据,您可以简单地使用
sum()
而不是count()
:
这是因为值可能是0
或1
。换句话说,这些列被设计为可以为此目的进行汇总的标志
如果它们可以采用其他值,您可以使用以下内容:
sum(case when repair = 1 then 1 else 0 end) as repairs
注:
- 您应该限定所有列名。我在猜这些专栏是从哪里来的
- 切勿在
子句中使用逗号。始终使用正确、明确的FROM
语法JOIN
sum()
而不是count()
:
这是因为值可能是0
或1
。换句话说,这些列被设计为可以为此目的进行汇总的标志
如果它们可以采用其他值,您可以使用以下内容:
sum(case when repair = 1 then 1 else 0 end) as repairs
注:
- 您应该限定所有列名。我在猜这些专栏是从哪里来的
- 切勿在
子句中使用逗号。始终使用正确、明确的FROM
语法JOIN
- 这是您现有的where条款:
where vehicles.Vehicle_ID = vehicles_inspections.Vehicle_ID
在该条款中,添加以下内容:
and repair_service_complete = 0
and repair = 1
或满足您业务需求的任何类似过滤器。这是您现有的where条款:
where vehicles.Vehicle_ID = vehicles_inspections.Vehicle_ID
在该条款中,添加以下内容:
and repair_service_complete = 0
and repair = 1
或者任何类似的过滤器都可以满足您的业务需求。嘿,工作非常完美谢谢,只是想知道为什么我不应该使用逗号我最近才开始使用sql我从来没有不使用过它们???@leonHill。它们是过时的古老语法,已经存在了几十年。正确的语法是显式的
JOIN
s。它更强大、更标准(这是两个主要原因)。此外,几乎所有人都发现,在连接条件与表引用一起的查询中进行跟踪比在where
子句中混合查询更容易。如果您正在学习SQL,那么学习“JOIN”的JOIN
比学习“JOIN”的“逗号”更有意义。多谢各位,我现在就开始使用JOIN而不是逗号。谢谢你所有的帮助嘿,工作完美的人谢谢你,只是想知道为什么我永远不应该使用逗号我最近才开始使用sql我从来没有不使用过它们???@leonHill。它们是过时的古老语法,已经存在了几十年。正确的语法是显式的JOIN
s。它更强大、更标准(这是两个主要原因)。此外,几乎所有人都发现,在连接条件与表引用一起的查询中进行跟踪比在where
子句中混合查询更容易。如果您正在学习SQL,那么学习“JOIN”的JOIN
比学习“JOIN”的“逗号”更有意义。多谢各位,我现在就开始使用JOIN而不是逗号。谢谢你的帮助