【问题标题】:Group or cross function组或交叉功能
【发布时间】:2022-01-08 13:35:22
【问题描述】:

我有一张包含一些数据的表格

ID  Topic
1   A
1   B
2   B
3   C
4   A
4   B
5   A

共 5 条记录

我喜欢计算与主题 A 相同的 ID,然后计算 B。所以结果计数总计 5 ID2 = 2(A 和 B)和 ID4 = 2(A 和 B)和 ID5 = 1(A)
不知道如何计算这样的。谢谢

【问题讨论】:

  • 提问时,您需要提供minimal reproducible example: (1) DDL 和样本数据填充,即 CREATE 表和 INSERT T-SQL 语句。 (2) 你需要做什么,即逻辑和你的代码尝试在 T-SQL 中实现它。 (3) 期望的输出,基于上述#1 中的样本数据。 (4) 您的 SQL Server 版本 (SELECT @@version;)。
  • 但您没有总共 5 条记录。您的意思是在 ID 列中有 5 个不同的值吗?我不明白“ID2”,因为只有一行 ID = 2,但我想我理解“ID4”,因为有 2 行(A 和 B)的 ID = 4。你能澄清一下(并更正你的格式吗)?
  • 我真的不知道这个的逻辑,输出计数总共计数5条记录
  • 如果你不这样做 - 那么没有其他人会这样做,而猜测是任何人都可以做的。许多人不会尝试这样做。
  • 为这个问题道歉。

标签: sql sql-server tsql


【解决方案1】:

正如@SMor 所说,这个问题并不清楚。

如果你只知道上表,结果是5,不知道计算结果的逻辑,我们可以把它看成是得到这个表中唯一ID个数的结果。

因为上表只有一个逻辑可以得到5的值。

如果是这样,您可以尝试以下方法。

  SELECT count(id) result
  FROM (
      select id
      from your_table
      group by id
  ) A

或者,如果您只想获取 5 条记录(关于相同 ID 的任何主题),请尝试此操作。

SELECT id, max(topic)
FROM your_table
GROUP BY id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多