Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 统计不同事件_Sql_Postgresql - Fatal编程技术网

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

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

我想这不是典型的
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