gpt4 book ai didi

mysql - SQL - 行中不同数量的元素

转载 作者:行者123 更新时间:2023-11-29 06:38:53 25 4
gpt4 key购买 nike

假设我有三列:dim1、dim2、dim3 - 所有都是 int 类型值。

我想计算中不同值的数量 - 因此,对于 ID #13 的行 dim1=20、dim2=30 和 dim3=20,该值存储在新的行中创建的列将等于 2。

这有可能吗?我在多列上尝试了 COUNT DISTINCT 的各种组合,但到目前为止还没有成功。

最佳答案

count 这样的聚合函数可以跨行工作,而不是跨列工作。我看到有两种方法可以解决这个问题:

1) 您可以使用 case 语句来解决这个问题(当字段超过 3 个时,该解决方案会变得更加复杂):

select dim1, dim2, dim3,
case when dim1 <> dim2 then 1 else 0 end
+ case when dim1 <> dim3 then 1 else 0 end
+ case when dim2 <> dim3 then 1 else 0 end as cnt
from your_table

2) 假设每行都有某种 ID,您可以使用 union 将数据转换为更多的键/值集,这将允许您使用 count :

select dim1, dim2, dim3, cnt
from your_table
join (select id, count(distinct dim) as cnt from
(select id, dim1 as dim from your_table
union all
select id, dim2 from your_table
union all
select id, dim3 from your_table)
group by id) c
on your_table.id = c.id

关于mysql - SQL - 行中不同数量的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52556331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com