【问题标题】:MySQL Count presence of a value in multiple columnsMySQL Count 在多列中存在一个值
【发布时间】:2013-10-04 17:54:20
【问题描述】:

我有一个名为“客户”的表,其中包含一个 CustID 列和三个其他列,称为 Prod1、Prod2、Prod3。 Prod 列对每个客户都有一个值“0”或“1”,表示客户是否拥有该特定产品(1 = 他们有,0 = 他们没有)即:

      CustID   Prod1   Prod2   Prod3
     -------------------------------
      001     1       1        0
      002     0       0        1
      003     1       1        1
      004     1       0        1

我想知道每种产品有多少客户,即我的输出需要是:

      Prod   Count   
     --------------
      Prod1   3  
      Prod2   2     
      Prod3   3    

谢谢!

【问题讨论】:

  • 你有没有尝试过?
  • 这正是我们应该在将其投入生产之前学习规范化的原因
  • 好奇是绝对正确的。如果您可以规范化数据库,它将为您省去很多麻烦。如果您的产品群呈指数级增长怎么办?您是否需要潜在的 100 个字段来指定每个产品。客户是具有某些特征的对象,而产品是具有不同特征集的对象。它们应该是两个不同的表。

标签: mysql sql


【解决方案1】:
SELECT "Prod1" AS Prod, Sum(Prod1) As [Count] FROM Customers
UNION
SELECT "Prod2" AS Prod, Sum(Prod2) As [Count] FROM Customers
UNION
SELECT "Prod3" AS Prod, Sum(Prod3) As [Count] FROM Customers

【讨论】:

  • @user2847583,您找到问题的答案了吗?还是你自己解决的?
猜你喜欢
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
相关资源
最近更新 更多