根据条件检索值

时间:2014-05-02 20:11:02

标签: mysql sql select group-by where-clause

请查看以下查询。

SELECT `p_id`, COUNT(`p_id`) AS OverlapWords, `UniqueWordCount`, 
(COUNT(`p_id`)/`UniqueWordCount`) AS SimScore FROM `key_uniqueword` WHERE `word` IN 
('stand','on') GROUP BY (`p_id`) LIMIT 500

我需要将SimScore转换为百分比,并获取SimScore小于90%的所有记录。我怎么能在SQL中这样做?上次当我这样做时,它给我一个像Invalid use of Group function

这样的错误

1 个答案:

答案 0 :(得分:1)

你试过这个吗?

SELECT `p_id`, COUNT(`p_id`) AS OverlapWords, `UniqueWordCount`, 
       (COUNT(`p_id`)/`UniqueWordCount`) AS SimScore
FROM `key_uniqueword`
WHERE `word` IN ('stand','on')
GROUP BY (`p_id`)
HAVING SimScore < 0.9
LIMIT 500;

聚合函数结果的条件属于having子句,而不是where子句。