我有一个名为feedback
的表,用于监控事件的反馈:
id, heardabout, booking
0 friend 0
1 online 5
2 friend 3
我一直在使用此查询计算出它们的百分比:
SELECT `booking` AS `rating`, (COUNT(`booking`) * 100 / (Select COUNT(*) FROM `feedback`)) AS `percent` FROM `feedback` GROUP BY `booking`;
产生:
rating, percent
0 10.1449
3 5.7971
4 13.0435
5 71.0145
哪个好,而且正确。但是,我不想算数' 0' 0某些字段的条目(这意味着它们不适用于用户)我将如何进行此操作?只需将WHERE
预订!= '0'
添加到上述查询中即可完成任何操作,但不会将其删除,数字不会发生变化,因此不会加起来为100。
答案 0 :(得分:0)
为了将来参考,我实际上解决了这个问题:
我需要的SQL语句是:
SELECT `booking` AS `rating`,
(COUNT(`booking`) * 100 / (Select COUNT(*) FROM `feedback` WHERE `booking` != '0')) AS `percent`
FROM `feedback` WHERE `booking` != '0' GROUP BY `booking`;
关键是将WHERE条件放在子查询SELECT COUNT (*)
内(以及最后)。这意味着要除以的总数为而不是为'0'条目。