如何使用查询在不同列中找到相同值的出现

     2023-05-08     274

关键词:

【中文标题】如何使用查询在不同列中找到相同值的出现【英文标题】:How find the occurrences of same value in different columns using a query 【发布时间】:2018-07-11 10:15:29 【问题描述】:

当我参加面试时,我遇到了一个有趣的问题,如下所示 下面给出问题

如何找出所有列中值 1 的出现情况

DECLARE @tbl AS TABLE(Col1 INT, Col2 INT, Col3 INT)
INSERT INTO @tbl
VALUES(1,1,1),(1,2,1),(1,1,3)

我已经分享了如下的答案。不确定这是否是一个正确的答案。

SELECT (SELECT COUNT(1) FROM @tbl WHERE COL1 = 1) +
(SELECT COUNT(1) FROM @tbl WHERE COL2 = 1)+
(SELECT COUNT(1) FROM @tbl WHERE COL3 = 1)

请告诉我是否有其他方法可以找到正确的答案

【问题讨论】:

【参考方案1】:

你可以使用apply

select cols, count(*) as occurrence 
from @tbl cross apply 
     ( values ('col1', col1), ('col2', col2), ('col3', col3)
     ) t (cols, val)
where val = 1
group by cols;

【讨论】:

太棒了……太棒了:) 很好的答案(我的支持)。一个倒退:您仍然必须知道(并输入)列的名称......【参考方案2】:

我想到了分享一个答案:)不知道它有多正确。

DECLARE @tbl AS TABLE(Col1 INT, Col2 INT, Col3 INT)
INSERT INTO @tbl
VALUES(1,1,1),(1,2,1),(1,1,3)
SELECT SUM(CASE WHEN Col1 =1 THEN 1 ELSE 0 END)+SUM(CASE WHEN Col2 =1 THEN 1 ELSE 0 END)+SUM(CASE WHEN Col3 =1 THEN 1 ELSE 0 END) FROM @tbl WHERE (Col1 = 1 OR Col2 =1 OR COl3=1)

【讨论】:

【参考方案3】:
SELECt a.*, b.x  FROM @tbl a
OUTER APPLY
(   
    SELECT TOP 1 1
    FROM (VALUES(a.Col1),(a.Col2),(a.Col3)) c(a)
    WHERE   
        c.a = 1
) b(x)

【讨论】:

【参考方案4】:

另一种方法使用 XML 和XQuery 的强大功能来处理通用数据。当您将值传递为sql:column()sql:variable 而不是硬编码的“1”时,它将是完全通用的。这种方法甚至不需要提前知道列的数量和名称:

DECLARE @tbl AS TABLE(Col1 INT, Col2 INT, Col3 INT);
INSERT INTO @tbl
VALUES(1,1,1),(1,2,1),(1,1,3);    

--找到所有值为1的行

SELECT 
(
    SELECT * FROM @tbl FOR XML PATH('row'),ROOT('tbl'),TYPE
)
.query('/tbl/row[not(*/text()!="1")]');

--数一数

SELECT *
      ,x.value('count(/row/*[text()="1"])','int')
FROM @tbl t
CROSS APPLY(SELECT t.* FOR XML PATH('row'),TYPE) AS A(x)

【讨论】:

现在我也必须从 xml 开始。

如何使用mysql查询某个列中相同值的数量统计

参考技术A如何使用MySQL查询某个列中相同值的数量统计可以通过用该字段分组计数获得。例如:selectcol1,count(col1)ascntfromt1groupbycol1;这个查询可返回表t1的字段col1中每个值的重复次数。 参考技术B可以通过用该字段分组计数获得。例... 查看详情

sql查询以选择两列中具有相同id但不同值的记录

】sql查询以选择两列中具有相同id但不同值的记录【英文标题】:sqlquerytoselectrecordhavingsameidbutdifferentvaluesintwocolumns【发布时间】:2021-03-1801:22:00【问题描述】:我尝试了几个小时并阅读了很多帖子,但我仍然不知道如何处理这个... 查看详情

如何获取在 city 列中没有相同值的 ID 列(和其他列)?

】如何获取在city列中没有相同值的ID列(和其他列)?【英文标题】:HowdoIgettheIDcolumn(&othercolumns)thatdonothavethesamevalueinthecitycolumn?【发布时间】:2021-12-1503:43:15【问题描述】:假设我有这个:https://i.imgur.com/skAJi07.png我希望查询... 查看详情

如何使用 R 在向量中找到第二个非连续出现的值的索引?

】如何使用R在向量中找到第二个非连续出现的值的索引?【英文标题】:Howtofindtheindexofthesecond,non-sequentialoccurrenceofavalueinavectorusingR?【发布时间】:2014-03-2917:34:46【问题描述】:我需要找到向量中第二个非连续出现值的索引。一... 查看详情

访问具有相同 ID 但在其他 2 列中具有不同值的选择行

】访问具有相同ID但在其他2列中具有不同值的选择行【英文标题】:AccessselectrowswithsameIDbutdifferentvaluesin2othercolumns【发布时间】:2014-04-1007:24:42【问题描述】:我在Access2007中有下表:RouteCustPlanners44011004jasper44011005onno44011006jasper440... 查看详情

Mysql选择一列中具有相同值而另一列中具有不同值的行

...】:2012-05-2521:00:07【问题描述】:如果有人能验证我的SQL查询,我将不胜感激。对于以下数据集:MD5UserPKCategoryPKADCDE17ADCDE14ADCDE17dffrf17dffrf27dffrf26d 查看详情

将列中具有相同值的行合并在一起

...pandas解析):Filenamef1f2f31.jpg10.20.31.jpg00.80.72.jpg10.30.2我将如何使用此数据集并将其更改为如下所示的numpy数组:[[[1 查看详情

如何在具有不同属性值的页面上多次使用相同的简码

】如何在具有不同属性值的页面上多次使用相同的简码【英文标题】:Howtohavethesameshortcodemultipletimesonapagewithdifferentattributevalues【发布时间】:2020-02-2015:12:33【问题描述】:所以我基本上需要在同一页面上多次使用具有不同属性... 查看详情

如何在 R 的 2 个不同列中选择相同的分类观察

】如何在R的2个不同列中选择相同的分类观察【英文标题】:Howtoselectthesamecategoricalobservationin2differentcolumnsinR【发布时间】:2017-06-0314:23:39【问题描述】:我有一个来自2个来源的巨大合并数据框。我有兴趣找到2个分类变量的错误... 查看详情

如何选择在某列中具有相同值的所有行

】如何选择在某列中具有相同值的所有行【英文标题】:Howtoselectallrowswhichhavesamevalueinsomecolumn【发布时间】:2013-09-2023:49:45【问题描述】:我是sql新手,所以请善待。假设我必须显示所有具有相同电话号码的employee_ids(两列在同... 查看详情

如何对特定列中具有相同值的行求和

】如何对特定列中具有相同值的行求和【英文标题】:Howtosumrowsthathavethesamevalueinaspecificcolumn【发布时间】:2017-06-1616:49:12【问题描述】:我正在尝试获得显示展示位置产生的收入的结果。要计算展示位置收入,我需要进行此计... 查看详情

如何使用 Linq 获取列中每个不同值的计数

】如何使用Linq获取列中每个不同值的计数【英文标题】:HowtogetthecountofeachdistinctvalueinacolumnusingLinq【发布时间】:2021-11-1408:12:15【问题描述】:我有一张如下图所示的表格DbTableExample我尝试的是返回不同的varresult=db.TaskTable.Select(i... 查看详情

SQL查询以选择在同一列中具有不同值的子记录的父级

】SQL查询以选择在同一列中具有不同值的子记录的父级【英文标题】:SQLQuerytoselectparentthathaschildrecordswithdifferentvaluesinthesamecolumn【发布时间】:2015-05-2311:00:47【问题描述】:此数据库具有一对多的关系,其中父表Customers是客户列... 查看详情

如何计算 ID 在不同表的列中出现的次数

】如何计算ID在不同表的列中出现的次数【英文标题】:HowtoCountTimesanIDAppearsinaColumninaDifferentTable【发布时间】:2020-01-2321:19:50【问题描述】:提前道歉:我确信这相对容易,并且被问到令人作呕,但我就是想不出正确的搜索。基... 查看详情

如何在不同的列中显示包含每个月值的汇总数据?

】如何在不同的列中显示包含每个月值的汇总数据?【英文标题】:HowcanIdisplaysummarydatawithvaluesforeachmonthinadifferentcolumn?【发布时间】:2015-08-2704:00:48【问题描述】:我有一个日期条件,例如从2014年8月1日到2015年2月28日。现在我... 查看详情

如何通过对第 3 列中的值求和,将前 2 列中具有相同值的 Pandas Dataframe 行组合在一起?

】如何通过对第3列中的值求和,将前2列中具有相同值的PandasDataframe行组合在一起?【英文标题】:HowtogrouptogetherrowsofPandasDataframewithsamevaluesinfirst2columnsbysummingvaluesinthe3rdcolumn?【发布时间】:2020-12-0417:23:49【问题描述】:我有一... 查看详情

在表中找到两条具有相同值的记录

...张桌子b_im_message。它有列id、chat_id、user_id。我无法创建查询,因此“user_id”列中有3或4个值,而chat_id列中有两个条目。很难描述。我会举个例子。初始表格视图mysql>selectid, 查看详情

我可以使用 R 查看表中每列中出现的值的频率吗?

】我可以使用R查看表中每列中出现的值的频率吗?【英文标题】:CanIuseRtolookatthefrequencyofvaluesappearingineachcolumninatable?【发布时间】:2015-10-1216:23:41【问题描述】:我是R的初学者,我想知道是否可以使用它来全面了解我的数据。... 查看详情