如何将多个sql查询组合成单个查询?

时间:2017-04-07 10:56:49

标签: sql postgresql hibernate spring-boot

我正在使用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;

任何想法都可以完成任务。我是春天和休眠世界的初级开发人员。 请提出解决方案或任何有用的链接。

提前致谢

3 个答案:

答案 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,性能类似于低数量的过滤器。