供应商数量超过消费者数量的国家

时间:2017-10-28 02:38:42

标签: sql

我正努力尝试获得供应商数量大于这些州消费者数量的州。 以下是我试图开始工作的代码: enter image description here 当我排除having子句时,我得到以下结果:enter image description here

代码没有给我任何结果。此处还有数据库图表的快照。enter image description here

2 个答案:

答案 0 :(得分:0)

使用count(distinct)代替count()

select s.state, count(distinct s.supp_id), count(distinct c.con_id)

正在发生的事情是,您在每个供应商的每个状态下获得笛卡尔积,并与每个消费者交叉。

更好的解决方案实际上是在加入之前聚合数据。但这是对您编写的查询的最简单更改。

答案 1 :(得分:0)

这是另一种方法:

SELECT s.state, supp_count, con_count
FROM
(SELECT s.state, COUNT(s.supp_ID) as supp_count
FROM tb_supplier s) supp
INNER JOIN
(SELECT c.state, COUNT(c.con_ID) as con_count
FROM tb_consumer c) con
ON supp.state = con.state
WHERE supp_count > con_count

当然,这种方法假设(1)供应商和消费者表中的唯一性,以及(2)供应商表中的每个供应商应该被计算为消费者表中的每个消费者,即使它们不存在于消费者表中。事务表,因为没有引用。