gpt4 book ai didi

sql - 计算不同的事件

转载 作者:行者123 更新时间:2023-11-29 14:25:36 25 4
gpt4 key购买 nike

我正在使用 PostreSQL 研究 SQL,我对计算一个列值相对于另一个列值的不同出现次数有疑问。

我想这不是典型的 COUNTGROUP BY 问题,因为我找不到任何帮助或引用来解决我的问题,所以我会更好地解释我想要什么做一个简短的例子(如果可能的话)。
假设我有下表:

CREATE TABLE MYTABLE
(
id INTEGER NOT NULL,
genre VARCHAR(20) NOT NULL,
country VARCHAR(20) NOT NULL,
CONSTRAINT PK_MOVIE PRIMARY KEY (id)
);

INSERT INTO MYTABLE VALUES (1, 'Horror', 'EEUU');
INSERT INTO MYTABLE VALUES (2, 'Drama', 'EEEU');
INSERT INTO MYTABLE VALUES (3, 'Drama', 'Italy');
INSERT INTO MYTABLE VALUES (4, 'Horror', 'UK');
INSERT INTO MYTABLE VALUES (5, 'Drama', 'EEEU');
INSERT INTO MYTABLE VALUES (6, 'Drama', 'EEEU');

所以 MYTABLE 看起来像这样:

 id | genre  | country 
----+--------+---------
1 | Horror | EEUU
2 | Drama | EEEU
3 | Drama | Italy
4 | Horror | UK
5 | Drama | EEEU
6 | Drama | EEEU

我现在可以通过以下查询计算 country 的值对于 genre 的每个值重复了多少次:

select distinct count(*), m.genre, m.country
FROM MYTABLE m
GROUP BY m.genre, m.country;

返回:

 count | genre  | country 
-------+--------+---------
3 | Drama | EEEU
1 | Horror | EEUU
1 | Horror | UK
1 | Drama | Italy
(4 rows)

但是我怎样才能获得每个 genre 有多少个不同的 country 值?换句话说,我想获得这样一张表:

 genre  | different_countries 
--------+------------------
Horror | 2
Drama | 2

是否存在这样的查询?

最佳答案

你想要count(distinct):

select m.genre, count(distinct m.country)
from MYTABLE m
group by m.genre;

至于您的查询,您几乎从不需要将 select distinctgroup by 一起使用——在这种情况下 也不需要。 group by 已经删除了 group by 键的重复行。

关于sql - 计算不同的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58423762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com