首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计数三个字段之一中出现相同值的记录数

计数三个字段之一中出现相同值的记录数
EN

Stack Overflow用户
提问于 2020-01-15 06:30:35
回答 1查看 45关注 0票数 1

此问题的表结构:

代码语言:javascript
运行
复制
TABLE Roster; FIELDS {IDNum},{FavChs},{2ndFavChs},{3rdFavChs}

我正在尝试确定有多少记录在三个字段中的一个字段中具有相同的值。如果我只看一列,很简单:

代码语言:javascript
运行
复制
Select FavChs, Count(IDNum)
FROM Roster
WHERE FavChs is not null
Group by FavChs

但是,我需要检查是否在其他记录的三个字段中的任何一个字段中找到了相同的值。它位于哪个字段并不重要,重要的是它位于其中一个字段中。因此,如果表是:

代码语言:javascript
运行
复制
| IDNum | FavChs | 2ndFavChs | 3rdFavChs |
|-------|--------|-----------|-----------|
|   1   | Swiss  |   Brie    |   Feta    |
|   2   | Swiss  |   Feta    |   Cheddar |
|   3   | Cheddar|   Swiss   |   Cheddar |
|   4   | Feta   |   Swiss   |   (null)  |
|   5   | Feta   |   (null)  |   (null)  |
|   6   | Brie   |   Cheddar |   (null)  |
|   7   | Swiss  |    Swiss  |   Swiss   |
|   8   | Swiss  |   Brie    |   Cheddar |

我需要结果来证明:

代码语言:javascript
运行
复制
| Cheese | Count |
|--------|-------|
|  Brie  |   3   |
| Cheddar|   4   |
|  Feta  |   4   |
|  Swiss |   6   |
EN

回答 1

Stack Overflow用户

发布于 2020-01-15 06:37:18

试试这个:

代码语言:javascript
运行
复制
select c.Cheese, count(r.IDNum) as Count
from
(
  select distinct FavChs as Cheese from Roster
  union
  select distinct 2ndFavChs as Cheese from Roster
  union
  select distinct 3rdFavChs as Cheese from Roster
) c
join Roster r
on (r.FavChs = c.Cheese or r.2ndFavChs = c.Cheese or r.3rdFavChs = c.Cheese)
group by c.Cheese

记住使用Union而不是Union All,以确保查询C中的所有值都是不同的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59742693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档