加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgreSQL查询 – 计算两列匹配的列值

发布时间:2020-12-13 16:28:58 所属栏目:百科 来源:网络整理
导读:我需要帮助创建一个SQL查询来计算在两个单独的列上分列的行. 这是我的表的DDL: CREATE TABLE Agency ( id SERIAL not null,city VARCHAR(200) not null,PRIMARY KEY(id));CREATE TABLE Customer ( id SERIAL not null,fullname VARCHAR(200) not null,statu
我需要帮助创建一个SQL查询来计算在两个单独的列上分列的行.

这是我的表的DDL:

CREATE TABLE Agency (
  id SERIAL not null,city VARCHAR(200) not null,PRIMARY KEY(id)
);
CREATE TABLE Customer (
  id SERIAL not null,fullname VARCHAR(200) not null,status VARCHAR(15) not null CHECK(status IN ('new','regular','gold')),agencyID INTEGER not null REFERENCES Agency(id),PRIMARY KEY(id)
);

表中的样本数据

AGENCY
id|'city'
1 |'London'
2 |'Moscow'
3 |'Beijing'

CUSTOMER
id|'fullname'      |'status' |agencyid
1 |'Michael Smith' |'new'    |1
2 |'John Doe'      |'regular'|1
3 |'Vlad Atanasov' |'new'    |2
4 |'Vasili Karasev'|'regular'|2
5 |'Elena Miskova' |'gold'   |2
6 |'Kim Yin Lu'    |'new'    |3
7 |'Hu Jintao'     |'regular'|3
8 |'Wen Jiabao'    |'regular'|3

我想按城市计算新客户,普通客户和黄金客户.

我需要单独计算(‘新’,’常规’,’黄金’).这是我想要的输出:

'city'   |new_customers|regular_customers|gold_customers
'Moscow' |1            |1                |1
'Beijing'|1            |2                |0
'London' |1            |1                |0
几周前我一直在挣扎着.
这就是你所需要的.
SELECT 
  Agency.city,count(case when Customer.status = 'new' then 1 else null end) as New_Customers,count(case when Customer.status = 'regular' then 1 else null end) as Regular_Customers,count(case when Customer.status = 'gold' then 1 else null end) as Gold_Customers 
FROM 
  Agency,Customer 
WHERE 
  Agency.id = Customer.agencyID 
GROUP BY
  Agency.city;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读