当前位置: 首页 > 面试题库 >

有没有针对“ ONTAINS”的MySQL聚合函数?

白永昌
2023-03-14
问题内容

说我有这个数据集

  user  | group
--------+-------
a@a.com |   A
a@a.com |   B
b@b.com |   A
c@c.com |   B
d@d.com |   A
d@d.com |   B
d@d.com |   C

我想将其转换成这样的表:

  user  | IN_A  | IN_B  | IN_C
--------+-------+-------+-------
a@a.com | TRUE  | TRUE  | FALSE
b@b.com | TRUE  | FALSE | FALSE
c@c.com | FALSE | TRUE  | FALSE
d@d.com | TRUE  | TRUE  | TRUE

我有:

  user,
  IF(LOCATE('A', GROUP_CONCAT(group)) > 0, TRUE, FALSE) AS IN_A,
  IF(LOCATE('B', GROUP_CONCAT(group)) > 0, TRUE, FALSE) AS IN_B,
  IF(LOCATE('C', GROUP_CONCAT(group)) > 0, TRUE, FALSE) AS IN_C
FROM users

我想知道的是,是否有更好的方法来知道聚合字段是否包含值,或者这是唯一的方法?


问题答案:

正确的方法:

SELECT
   user,
   IF(SUM(group = 'A'), TRUE, FALSE) AS IN_A,
   IF(SUM(group = 'B'), TRUE, FALSE) AS IN_B,
   IF(SUM(group = 'C'), TRUE, FALSE) AS IN_C
FROM users
GROUP BY user


 类似资料:
  • 问题内容: 在MySQL中,我观察到尽管没有GROUP BY子句,但在SELECT列表中使用AGGREGATE FUNCTION的语句被执行了。如果这样做,其他RDBMS产品(例如SQL Server)将引发错误。 例如,被执行而没有任何错误,并返回col1,col2的第一行值和col3的所有值之和。以上查询的结果是一行。 谁能告诉我为什么MySQL会发生这种情况? 提前致谢!! 问题答案: 这是

  • 问题内容: 枢轴,伙计…我只是想念它。也许是因为我没有做汇总。哎呀,也许枢轴不是做到这一点的方法。感觉应该很简单,但这让我感到困惑。 假设我有这个: 我怎样才能将这两个记录取回: 就此问题而言,需要注意的几点 我 从来没有 打算要回两个以上的记录 我总是会取回整数,但 我不知道它们会是什么 。 问题答案: 您可以实现运算符: 参见带有演示的SQL Fiddle

  • 问题内容: 我有这样的表… 我想要这个… 使用PIVOT可以做到吗? 问题答案: 您可以使用MAX聚合,它将仍然有效。一个值的最大值=该值。 在这种情况下,您还可以在customerid上自我连接5次,并按每个表引用按dbColumnName进行过滤。它可能会更好。

  • 问题内容: 我想从以下带有列,的数据框中创建数据透视表。数据透视表显示,但不显示。当我只用尝试时,我得到了错误。如何解决此问题,使我同时看到数字字段和字段(字符串) 问题答案: 您可以使用和: 产量 或者,与配合使用: 产量 使用, 通过获取找到的第一个值对每个或组进行聚合。在您的情况下,似乎没有重复项,因此第一个值与唯一的值相同。

  • 问题内容: 只有最后一部分(我的意思是我仅对此有问题) 当我编译它时,我没有合适的构造函数错误。为什么是这样??顺便说一下,Spirtokouto类的目的是要增加一个计数值(权重)。我可以将一个班级扩展到> 1个班级吗? 问题答案: Box类有两个构造函数:,但它们都不带四个参数,而您要用四个参数来调用它,因此请更改此参数: 对此: 调用必须首先在构造函数中进行。 我可以将一个班级扩展到 > 1个

  • 问题内容: 如果DBMS没有ANY()聚合函数,我通常使用MAX()或MIN()。 在MySQL和MS-SQL中有便宜些的东西吗? 问题答案: MySQL 不需要 ANY()聚合。 如果我做一个 微软的T-SQL会抱怨,但是 MySQL将只是默默地执行 当然哪一个比 MySQL支持 ,但 不起作用,因为它 是类似于 和的运算符 。 参见: http //dev.mysql.com/doc/refm

  • 我试图在Hibernate中执行命名查询。查询在此映射文件中定义: MxePosition类如下: 我试图做的是让命名查询返回由另一列分组的一列的总和。然而,Hibernate抛出了一个错误,我怀疑这是因为查询结果不包含ID列。 有办法吗?必须能够在Hibernate中执行包含GROUP BY子句的查询,而不在结果中包含ID。 如果有更好的方法,我愿意接受其他不使用命名查询的建议。

  • 如何使用规范编写下面查询 当我们使用Specification时,即使在multiselect中提到了count(),也没有选择count()。 为什么JPA中的multiselect方法不起作用