好的,所以我有一个有6个字段的学生表,(StudentID,HasBamboo,HasFlower,HasAloe,HasFern,HasCactus)" HasPlant"字段是布尔值,因此1表示植物,0表示没有植物。
我想找一个学生的平均植物数量。桌子上有数百名学生。我知道这可能涉及某种转换,当然还要计算布尔值并获得平均值。我确实看过这个问题SQL to transpose row pairs to columns in MS ACCESS database有关转置的信息(以前从未做过),但我认为可能会有太多列。
我的第一个想法是使用for循环,但我不确定Access中的SQL是否存在。也许是SELECT / FROM / WHERE / IN类型结构?
对于逻辑和一些可能的阅读材料的提示将不胜感激。
答案 0 :(得分:0)
你可以获得每个类别的个人总数:
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
最后一张表然后存储拥有特定工厂的每个学生的记录;但是您可以轻松地在正确的位置添加不同的信息(公寓号码给学生;拉丁文名称为植物;日期获得OwnedPlants),而无需完全重新设计表格结构并添加大量字段。 (DatAquiredBamboo,DateAquiredFlower等)