sql - 每行仅取消嵌套一个重复值
问题描述
我有下表 -
ID A1 A2 A3 A4 A5 A6
1 324 243 3432 23423 342 342
2 342 242 4345 23423 324 342
我可以取消嵌套这张表,让我计算所有数字,就像这样 -
324 2
243 1
3432 1
23423 1
342 3
242 1
4345 1
23423 1
但是我如何让它只计算同一行中的数字 1 次。例如,这是我期待的输出 -
324 2
243 1
3432 1
23423 1
342 2
242 1
4345 1
23423 1
342
是2
因为——
1)它在第一行。
2)它在第二行出现了2次,但我只想数一次。
解决方案
只需使用count(distinct)
:
select v.a, count(distinct t.id)
from t cross join lateral
(values (a1), (a2), (a3), (a4), (a5), (a6)
) v(a)
group by v.a;
这是一个 db<>fiddle。
推荐阅读
- graphql - 尝试在 GraphCMS api 上连接时出现 Gatsby Graphql 问题
- varnish - 在默认端口 6081 上清漆
- ruby - kubeclient create_namespace NoMethodError
- html - NVDA 和 JAWS 在 Textarea 中禁用输入
- c# - 如何使用 CoreCursorType.Custom 在 C# UWP 中创建自定义光标?
- python - List append in a "for" loop
- android - json 显示错误 no value for total 即使值存在
- python - Conda 未安装最新版本
- c - 解析来自套接字的单个消息,其中包含 C 中的 2 个字符串
- angular6 - 导航到孙子路线Angular 6