例如,我有一种情况,我必须计算表的一列中相同类型的字符串数。一列将具有诸如 A=absent P=present 之类的值
AAAPPPPPPPA
所以我需要计算所有相同类型的字符串,比如 P ie Present 这意味着查询应该给出计数结果 7。什么可以是偶像查询?
我认为这是我能想到的最简单的 SQL 查询Select count(*) from table where attendence='P'
更新: 确保在 Java 代码中使用准备好的语句的参数化格式以防止 SQL 注入。
SELECT attendance, COUNT(*)
FROM Roster
GROUP BY attendance;
将为您提供列中每个值的计数。因此,对于具有 4 个 A 值和 7 个 P 值的表,查询将返回
attendance | COUNT(*)
___________|_________
|
A | 4
P | 7
另外:由于您的表在其出勤列中有重复的值,您应该考虑将所有可能的出勤值提取到它们自己的“枚举”中。SQL 不提供枚举,但有几种方法可以达到类似的效果。
一种方法是创建一个查找表,其中包含一个 ID 列(可以是自动增量),以及您想要的出勤值。然后,在您的名册表中,使用外键来引用正确值的 ID。
为了将来节省时间,您可以创建一个使用出勤值而不是 ID 的视图。
如果您对改进数据库设计感兴趣,可以阅读Database Normalization 。