微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有和没有聚合的SQL查询

如何解决有和没有聚合的SQL查询

我有4个这样创建的表

CREATE TABLE IF NOT EXISTS customers (
    ssn CHAR(11) PRIMARY KEY,first_name VARCHAR(32),last_name VARCHAR(32),country VARCHAR(16)
);

CREATE TABLE IF NOT EXISTS credit_cards (
    ssn CHAR(11) REFERENCES customers(ssn),number VARCHAR(20) PRIMARY KEY,type VARCHAR(32)
);

CREATE TABLE IF NOT EXISTS merchants (
    code CHAR(10) PRIMARY KEY,name VARCHAR(64),country VARCHAR(16)
);


CREATE TABLE IF NOT EXISTS transactions(
    identifier INTEGER PRIMARY KEY,number VARCHAR(20) REFERENCES credit_cards(number),code CHAR(10) REFERENCES merchants(code),datetime TIMESTAMP,amount NUMERIC
);

我想找到没有针对每种信用卡进行交易的不同商人的代码名称。我想知道一种使用聚合的方法,一种不使用聚合的方法

预先感谢您的帮助

解决方法

我将其理解为关系划分问题。您希望没有针对每种可能的信用卡类型进行交易的商人。

一种选择是使用hading子句进行聚合和过滤:

select m.*
from merchants m
inner join transactions t on t.code = m.code
inner join credit_cards cc on cc.number = m.number
group by m.code
having count(distinct cc.type) < (select count(distinct type) from credit_cards)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。