我想计算sqlite
文件的第一列和最后一列对于数据集中的每一行相同的次数。数据集有16+百万行,效率非常重要。
我尝试过:
SELECT * FROM tab WHERE [0] = [3]
但是它不起作用。可能是因为它会将每行的第一列与同一行的最后一列进行比较。
假设这是我的数据集:
0 |1 |2 |3 |
--------------------------------------
2005:67 |ytg |6utgjgt |786:09 |
2005:903 |467 |009 |2005:67 |
2005:444 |355 |785 |2005:450|
2005:450 |355 |785 |N/A |
2005:934 |467 |009 |N/A |
2005:000 |355 |785 |2005:450|
2005:987 |355 |785 |2005:450|
--------------------------------------
输出应为:
0 |1 |2 |3 |4 |
-----------------------------------------------
2005:67 |ytg |6utgjgt |786:09 |1 |
2005:450 |355 |785 |N/A |3 |
2005:934 |467 |009 |N/A |0 |
-----------------------------------------------
第4列与其中某一行的第一列相同的行被删除但被计数。 (行的第四列不可能与多于一行的第一列相同。并且每一行的第一列的值都相同) 大家可以帮我吗?我是菜鸟,非常感谢您提供一些解释以及代码。谢谢
答案 0 :(得分:1)
不存在:
select t.*,
(select count(*) from tab where [3] = t.[0]) [4]
from tab t
where not exists (
select 1 from tab
where [0] = t.[3]
)
请参见demo。
结果:
| 0 | 1 | 2 | 3 | 4 |
| -------- | --- | ------- | ------ | --- |
| 2005:67 | ytg | 6utgjgt | 786:09 | 1 |
| 2005:450 | 355 | 785 | N/A | 3 |
| 2005:934 | 467 | 009 | N/A | 0 |