如何使用java计算sql中一列表中的不同值

时间:2013-08-18 14:02:03

标签: java sql

我有一种情况,我必须在一个表的一列中计算相同类型的字符串数,例如。列将具有诸如A =缺席P =存在

之类的值
A A A P P P P P P P A

所以我需要计算所有相同类型的字符串,如P即Present表示查询应该给出计数结果7。 偶像可以查询什么?

2 个答案:

答案 0 :(得分:3)

我认为这是我在SQL Select count(*) from table where attendence='P'

方面可以想到的最简单的查询

<强>更新 确保在Java代码中使用参数化格式的预准备语句以防止SQL注入。

答案 1 :(得分:3)

SELECT attendance, COUNT(*)
FROM Roster
GROUP BY attendance;

将为您提供列中每个值的计数。因此,对于具有4个A值和7个P值的表,查询将返回

attendance | COUNT(*)
___________|_________
           |
A          | 4
P          | 7

旁白:由于您的表在其出勤列中具有重复值,因此您应该考虑将所有可能的出勤值拉入他们自己的“枚举”类别中。 SQL不提供枚举,但有几种方法可以实现类似的效果。

一种方法是创建一个包含ID列(可以是自动增量)的查找表,以及您想要出席的值。然后,在您的Roster表中,使用外键来引用正确值的ID。

为了节省您将来的时间,您可以创建一个使用出勤值而不是ID的视图。

如果您对改进数据库的设计感兴趣,可以阅读Database Normalization