Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
SQLite-Count Distinct与三列分组忽略最后一个分组_Sqlite - Fatal编程技术网

SQLite-Count Distinct与三列分组忽略最后一个分组

SQLite-Count Distinct与三列分组忽略最后一个分组,sqlite,Sqlite,我正在制作一个关于美国公司董事的数据库。我根据一个查询创建的一个特定表包含了一家公司宣布破产前5年的所有董事(查询如下): 我不知道为什么,但是这个查询忽略了最后一个组(conn\u co\u id),并且对于任何dir\u id和破产公司id,结果都是相同的,在这两个组中,它也应该根据conn\u co\u id是什么而变化。结果样本(仅当dir\u id或破产公司id发生变化时才会发生变化,如图所示): 结果与我只使用dir\u id和破产公司id进行分组相同,而每个连接公司id的结果应该

我正在制作一个关于美国公司董事的数据库。我根据一个查询创建的一个特定表包含了一家公司宣布破产前5年的所有董事(查询如下):

我不知道为什么,但是这个查询忽略了最后一个组(
conn\u co\u id
),并且对于任何
dir\u id
破产公司id
,结果都是相同的,在这两个组中,它也应该根据
conn\u co\u id
是什么而变化。结果样本(仅当
dir\u id
破产公司id
发生变化时才会发生变化,如图所示):


结果与我只使用
dir\u id
破产公司id
进行分组相同,而每个
连接公司id
的结果应该不同。我对
groupby
语句做了很多研究,以及它是如何变得棘手的,但我还没能破解这个问题。我非常感谢在这方面的任何帮助

很难重现你的结果。但是您对多个分组的查询似乎没有问题。见下例:

CREATE TABLE test (dir_id INTEGER, bankrupt_co_id INTEGER, conn_co_id INTEGER, linked_dir_id INTEGER);
使用一些虚拟数据:

select * from test;
dir_id      bankrupt_co_id  conn_co_id  linked_dir_id
----------  --------------  ----------  -------------
1           1               1           1            
1           1               1           2            
1           1               1           4            
1           1               1           5            
1           1               1           6            
1           1               1           7            
1           1               2           1            
1           1               2           2            
1           1               2           3            
1           2               2           1            
3           3               2           1            
3           1               2           1            
3           2               2           1            
3           2               2           4            
1           1               1           3            
1           1               4           4     
包含您的
conn\u co\u id
的查询结果如下:

SELECT dir_id, bankrupt_co_id, conn_co_id, COUNT(DISTINCT linked_dir_id) as conn_dirs FROM test WHERE bankrupt_co_id!=conn_co_id GROUP BY dir_id, bankrupt_co_id, conn_co_id;
dir_id      bankrupt_co_id  conn_co_id  conn_dirs 
----------  --------------  ----------  ----------
1           1               2           3         
1           1               4           1         
3           1               2           1         
3           3               2           1 
然而,如果没有前两个结果,则将其合并:

SELECT dir_id, bankrupt_co_id, conn_co_id, COUNT(DISTINCT linked_dir_id) as conn_dirs FROM test WHERE bankrupt_co_id!=conn_co_id GROUP BY dir_id, bankrupt_co_id;
dir_id      bankrupt_co_id  conn_co_id  conn_dirs 
----------  --------------  ----------  ----------
1           1               4           4         
3           1               2           1         
3           3               2           1  

谢谢你的回复!这就是我所想的,但仍然让我困惑的是,查询在我的表上不能正常工作。我希望我能让这个例子更具可复制性,但是这个数据集是专有的,所以我不能分享更多。你知道为什么查询会这样吗?我假设这与表有关,这就是为什么我将创建它的查询放在帖子中的原因。我真的很感谢你抽出时间来做这件事!我刚刚发现问题在于如何构造第一个查询,所以是的,这个问题不依赖于分组和聚合函数。谢谢你回复我的问题,很高兴你找到了你的错误!干杯
SELECT dir_id, bankrupt_co_id, conn_co_id, COUNT(DISTINCT linked_dir_id) as conn_dirs FROM test WHERE bankrupt_co_id!=conn_co_id GROUP BY dir_id, bankrupt_co_id, conn_co_id;
dir_id      bankrupt_co_id  conn_co_id  conn_dirs 
----------  --------------  ----------  ----------
1           1               2           3         
1           1               4           1         
3           1               2           1         
3           3               2           1 
SELECT dir_id, bankrupt_co_id, conn_co_id, COUNT(DISTINCT linked_dir_id) as conn_dirs FROM test WHERE bankrupt_co_id!=conn_co_id GROUP BY dir_id, bankrupt_co_id;
dir_id      bankrupt_co_id  conn_co_id  conn_dirs 
----------  --------------  ----------  ----------
1           1               4           4         
3           1               2           1         
3           3               2           1