Sql 多表内部联接
我有三个表,定义如下:Sql 多表内部联接,sql,sqlite,Sql,Sqlite,我有三个表,定义如下: merchant (name: string, price: integer) finance (no: string, gname: string, minCredit: integer) borrower (dname: string, gno: string, deliverydate: date) 示例数据集: merchant | finance | ally s jumbo jim b jumbo jimmy g smal
merchant (name: string, price: integer)
finance (no: string, gname: string, minCredit: integer)
borrower (dname: string, gno: string, deliverydate: date)
示例数据集:
merchant | finance |
ally s jumbo
jim b jumbo
jimmy g small
借款人.dname和借款人.gno是引用merchant.name和finance.no的外键
我正试图写一个查询,以找到借款人数量严格高于所有金融类型借款人平均数量的金融机构。我正在尝试输出财务编号(编号)
我所尝试的:
select f.no as no
from borrower b
join merchant m on m.name = b.dname
join finance f on f.no = b.gno
where count(m.name) > avg(b.dname)
这似乎没有给我正确的结果。我认为我加入这个表是在正确的道路上,我相信我的问题在于where语句(?)有什么帮助让我走上正确的道路吗?the
代码>需要放在语句的末尾,而不是开头,除了@a_horse_和_no_name所说的以外,不仅仅是代码>放错了位置。它也是完全可选的,可以删除,因为它实际上根本不需要。
;WITH findata AS
(SELECT
f.no
,COUNT(*) Cnt
FROM
finance f
GROUP BY
f.no)
SELECT
*
FROM
findata
WHERE
Cnt > (SELECT AVG(Cnt) FROM findata)