SELECT不使用HAVING子句返回任何内容

时间:2016-11-27 09:42:58

标签: mysql sql database

我试图获得总百分比并仅返回匹配> + 80.但是,这不会返回任何结果:

SELECT * FROM products WHERE Available=1 AND Merchant='Amazon' HAVING (LowestUsedPrice - LowestNewPrice) / LowestNewPrice * 100 >= ?

我正确使用HAVING吗?

4 个答案:

答案 0 :(得分:1)

根据我的理解,您希望使用having进行过滤,而您可能只使用where条件。

关于返回结果,您的查询将产生语法错误。如果您使用如下并且没有得到任何结果,那么显然这是因为条件和您的数据。在这种情况下,如果您提供数据,您可能会得到一些帮助。

SELECT * FROM products 
WHERE Available=1 
AND Merchant='Amazon' 
AND (LowestUsedPrice - LowestNewPrice) / LowestNewPrice * 100 >= ?

答案 1 :(得分:1)

HAVING指定SELECT语句中使用的组或聚合函数的搜索条件。

在汇总阶段之后应用

SELECT * FROM products WHERE Available=1 AND Merchant='Amazon' AND (LowestUsedPrice - LowestNewPrice) / LowestNewPrice * 100 >= ? ,如果要过滤汇总结果,则必须使用

public void makeRandomCardListForLearning (Course courseToBeMadeRandom) { List<List<List<Card>>> course = new ArrayList<List<List<Card>>>(); for(Chapter chptr: courseToBeMadeRandom.getChapterList()) { List<List<Card>> chapter = new ArrayList<List<Card>>(); course.add(chapter); for(Deck dck: chptr.getDeckList()) { List<Card> deck = new LinkedList<Card>(); chapter.add(deck); for(Card crd: dck.getCardList()) { if(dck.isTheCardDueToday(crd.getLastDate())) { deck.add(crd); } } Collections.shuffle(deck); } } }

您的查询错误。 你能做的只是在where子句中进行条件化。

>>> dictionary_of_words = {"yes":"oui", "no":"non"}
>>> dictionary_of_words["yes"]
'oui'
>>>

答案 2 :(得分:0)

SELECT *, (LowestUsedPrice - LowestNewPrice) / LowestNewPrice * 100 as percentage FROM products WHERE Available=1 AND Merchant='Amazon' HAVING  percentage  >= ?

答案 3 :(得分:0)

您的主要问题是您的百分比公式是错误的。使用

((LowestUsedPrice - LowestNewPrice) / LowestNewPrice) * 100

(LowestUsedPrice - LowestNewPrice) * 100 / LowestNewPrice

您使用的方式将执行类似

的操作
(20 - 8) / 15 * 100

12 / 1500 = 0.008

你需要

1200 / 15 = 80

将此修复程序添加到其他答案的解决方案