在oracle中将问题分组在一起

时间:2017-12-21 19:25:21

标签: sql oracle

我正在尝试显示已收到两个特定商品的商店总数。

SELECT DISTINCT count(stores_i), item_i
FROM all_stores  
WHERE item_i in (101, 105)
AND date_available IS NOT NULL
GROUP BY store_i, item_i
;

当我运行它时,它会从商店列中为我提供每个商店(1,2,3,4 ......等), 它还为我提供了item_i表的每个商店旁边的一个。 但是我希望它只有一个数字,表明有多少商店收到了商品101和商品105.

谢谢!

1 个答案:

答案 0 :(得分:1)

一种方法是两级聚合:

SELECT COUNT(*)
FROM (SELECT store_id
      FROM all_stores  
      WHERE item_i in (101, 105) AND date_available IS NOT NULL
      GROUP BY store_id
      HAVING COUNT(DISTINCT item_id) = 2
     ) a;

子查询获取销售这两个项目的商店。外部查询计算数字。