转置为 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 等)
好的,所以我有一个 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 等)