我试图获得总百分比并仅返回匹配> + 80.但是,这不会返回任何结果:
SELECT * FROM products WHERE Available=1 AND Merchant='Amazon' HAVING (LowestUsedPrice - LowestNewPrice) / LowestNewPrice * 100 >= ?
我正确使用HAVING
吗?
答案 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
将此修复程序添加到其他答案的解决方案