Sql 统计不同事件
我正在使用PostreSQL研究SQL,对于计算一个列的值相对于另一个列的不同出现次数有疑问 我想这不是典型的Sql 统计不同事件,sql,postgresql,Sql,Postgresql,我正在使用PostreSQL研究SQL,对于计算一个列的值相对于另一个列的不同出现次数有疑问 我想这不是典型的COUNT和groupby问题,因为我找不到任何关于我的问题的帮助或参考,所以我最好用一个简短的例子来解释我想做什么(如果可能)。 假设我有下表: CREATE TABLE MYTABLE ( id INTEGER NOT NULL, genre VARCHAR(20) NOT NULL, country VARCHAR(20) NOT NULL, CON
COUNT
和groupby
问题,因为我找不到任何关于我的问题的帮助或参考,所以我最好用一个简短的例子来解释我想做什么(如果可能)。假设我有下表:
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 | different_countries
--------+------------------
Horror | 2
Drama | 2
是否存在这样一个查询?您想要计数(不同)
:
至于您的查询,您几乎不需要将选择distinct
与分组依据一起使用,而不是在本例中使用<代码>分组依据
已经删除了分组依据
键的重复行。您想要计数(不同)
:
至于您的查询,您几乎不需要将选择distinct
与分组依据一起使用,而不是在本例中使用<代码>分组依据
已经删除了分组依据
键的重复行。您可能需要使用子查询
select count(1), t1.genre from (
select distinct country, genre
from MOVIE) as t1
group by t1.genre
您可能需要使用子查询
select count(1), t1.genre from (
select distinct country, genre
from MOVIE) as t1
group by t1.genre