我正在使用postgressql开发spring boot框架。 以下是示例查询1,2,... n。这些查询工作正常。但是我必须将这些查询组合成单个查询,因为表具有大量数据,因此由于性能问题,我无法多次运行查询(在for循环中)。但我不知道要结合这些查询。
1. SELECT product_name, count(*) FROM Products WHERE product_name='pro_a1' and price between 20 and 30 group by product_name;
2. SELECT product_name, count(*) FROM Products WHERE product_name='pro_b1' and price between 50 and 70 group by product_name;
我想将上面的查询组合成下面的一些我无法实现的内容。
SELECT product_name, count(*) FROM Products WHERE product_name in("pro_a1", "pro_b1", ...) and price between (20,30) AND (50,70) AND so on. group by product_name;
任何想法都可以完成任务。我是春天和休眠世界的初级开发人员。 请提出解决方案或任何有用的链接。
提前致谢
答案 0 :(得分:1)
您可以使用条件聚合。
spaces
答案 1 :(得分:0)
这是一种方法:
http://rm100.hadoop.cluster:8088/cluster/app/application_1491534363989_0004
如果您想为每种产品分别计算:
SELECT product_name, count(*)
FROM Products
WHERE (product_name = 'pro_a1' and price between 20 and 30) OR
(product_name = 'pro_b1' and price between 50 and 70)
GROUP BY product_name;
答案 2 :(得分:0)
SELECT product_name, count(*)
FROM Products
WHERE product_name='pro_a1' OR product_name='pro_b1'
AND price between 20 and 30 OR price between 50 and 70 group by product_name;
我认为这是更好的方法,简单明了。您可以使用IN语句TOO,性能类似于低数量的过滤器。