postgresql SQL:如何在表中同时使用分组和条件?

ezykj2lf  于 10个月前  发布在  PostgreSQL
关注(0)|答案(2)|浏览(134)

我有一个这样的结构表:
| ID|产品|公司|
| --|--|--|
| 1 |表|一|
| 2 |表|B|
| 3 |表|C|
| 4 |椅子|一|
| 5 |椅子|B|
| 6 |沙发|一|
| 7 |沙发|C|
我需要找到所有的产品,其公司包括A和B。在上面的例子中,这些将是tablechair
我设法写了一个查询,将返回产品,有一个以上的公司:

SELECT product FROM table_name
GROUP BY product HAVING COUNT(*) > 1
order by COUNT(*) desc;

字符串
但是我不能根据特定的公司来做选择,而不仅仅是他们的数量。如果有任何帮助,我将不胜感激!

5ktev3wc

5ktev3wc1#

SELECT product
    FROM table_name
   WHERE company IN ('A', 'B')
GROUP BY product
  HAVING COUNT(DISTINCT company) = 2
ORDER BY COUNT(*) desc;

字符串

ttp71kqs

ttp71kqs2#

我认为,我们可以通过在product列上的表上进行self join来实现。下面是示例:
从table_name t1和table_name t2中选择t1.product,其中t1.product=t2.product,t1.company =“A”和t2.company =“B”

相关问题