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

如何通过SQL合并同一项目附近?

萧辰沛
2023-03-14
问题内容

我的数据库中有一些数据:

id user 
1 zhangsan 
2 zhangsan 
3 zhangsan 
4 lisi 
5 lisi 
6 lisi 
7 zhangsan 
8 zhangsan

我要保持秩序,并合并几乎相同的用户物品,该怎么办?当我使用shell脚本时,我将(文件测试中的数据。):

cat test|cut -d " " -f2|uniq -c

这将得到结果为:

   3 zhangsan 
   3 lisi 
   2 zhangsan

但是如何使用sql呢?


问题答案:

如果你试试:

SET @name:='',@num:=0;

SELECT id,
       @num:= if(@name = user, @num, @num + 1) as number,
       @name := user as user
FROM foo
ORDER BY id ASC;

这给出了:

+------+--------+------+
| id   | number | user |
+------+--------+------+
|    1 |      1 | a    |
|    2 |      1 | a    |
|    3 |      1 | a    |
|    4 |      2 | b    |
|    5 |      2 | b    |
|    6 |      2 | b    |
|    7 |      3 | a    |
|    8 |      3 | a    |
+------+--------+------+

因此,您可以尝试:

SET @name:='',@num:=0;

SELECT COUNT(*) as count, user
FROM (
SELECT @num:= if(@name = user, @num, @num + 1) as number,
       @name := user as user
FROM foo
ORDER BY id ASC
) x
GROUP BY number;

这使

+-------+------+
| count | user |
+-------+------+
|     3 | a    |
|     3 | b    |
|     2 | a    |
+-------+------+

(我打电话给我的表foo,也只是使用的名称ab因为我懒得写zhangsan,并lisi一遍又一遍)。



 类似资料:
  • 我有两个数据。表X和表Y。 列 X: Y 中的值列: 创建两个data.tables: 我设置了 X 和 Y 的键: 现在,我尝试通过X中的< code>id和Y中的< code>ID来连接X和Y: All引发错误,指出参数中的列名无效。 我查阅了data.table的手册,发现< code>merge函数不支持< code>by.x和< code>by.y参数。 如何在不更改列名的情况下通过不同

  • 问题内容: 我有两个在android studio中制作的单独的android应用程序项目,我正在尝试将项目1合并到项目2中,以使其全部成为一个应用程序,我该怎么做呢?我知道如何在Eclipse中做到这一点,但在android studio中却不行。请注意,这两个项目都是android应用程序,都不是android库。 任何帮助都将是惊人的! 当我将项目1导入到项目模块中时,在生成成绩时出现此错误

  • 我有一个以下格式的文本文件。 第一行包括“USERID”=12345678,其他行包括每个应用程序的用户组:例如: 用户T-number T12345的用户对APP1和APP2具有WRITE访问权限,对APP1具有READ-ONLY访问权限。 T-Number只是另一种ID。 00001, 00002等都是序号,可以忽略。 我需要做一些过滤,并将包含USERID的行与所有具有用户组的行合并,将t-

  • 我有两个独立的android应用程序项目,它们都是在android studio中制作的。我正在尝试将项目1合并到项目2中,使其成为一个应用程序。我该怎么做呢?我知道如何在eclipse中完成,但不知道如何在android studio中完成。请注意,这两个项目都是android应用程序,没有一个是android库。 任何帮助将是惊人的! 当我将项目1导入项目模块时,我在年级生成中遇到以下错误:

  • 我有一个通量和单值,我不知道如何组合它们,以便在通量的每一项中都有单值。 我正在尝试这种方法,但它不起作用:

  • 表的复合键是symbol和“datetime”(它只是一个时间戳)。这两列在dynamodb中都设置为字符串。 我收到的错误是:提供的键元素与模式不匹配