转置为 Access 上布尔值的计数列 SQL

Transpose to Count columns of Boolean values on Access SQL

好的,所以我有一个 Student table,它有 6 个字段(StudentID、HasBamboo、HasFlower、HasAloe、HasFern、HasCactus),"HasPlant" 字段是布尔值,所以 1 表示植物,0表示没有植物。

我想知道一个学生拥有的植物的平均数量。 table 中有数百名学生。我知道这可能涉及某种转置,当然还包括计算布尔值并获得平均值。我确实看过这个问题 SQL to transpose row pairs to columns in MS ACCESS database 以获取有关转置的信息(以前从未做过),但我认为可能会有太多列。

我的第一个想法是使用 for 循环,但我不确定这些是否存在于 Access 的 SQL 中。也许是 SELECT/FROM/WHERE/IN 类型的结构?

只是逻辑上的提示和一些可能的阅读 material 将不胜感激。

您可以获得每个类别的总计:

SELECT COUNT(*) FROM STUDENTS WHERE HasBamboo

全部加起来,除以

SELECT COUNT(*) FROM STUDENTS

虽然这不是一个很好的数据库设计...更好的规范化是:

Table Students; fields StudentID, StudentName
Table Plants; fields PlantID, PlantName
Table OwnedPlants; fields StudentID,PlantID

最后一个 table 然后存储每个拥有特定植物的学生的记录;但是您可以轻松地在正确的位置添加不同的信息(学生的公寓号;植物的拉丁名称;OwnedPlants 的获取日期)而无需完全重新设计 table 结构并添加大量字段。 (DatAquiredBamboo、DateAquiredFlower 等)