gpt4 book ai didi

mysql - 如何同时对DISTINCT和COUNT进行SQL查询

转载 作者:行者123 更新时间:2023-11-29 15:36:49 25 4
gpt4 key购买 nike

我尝试执行一个查询,该查询允许我区分column1(名称)、column2(模式)和column3(日期)。但同时,我想计算同一个表中 mode 列中的值。我尝试连接这两个查询(下面),但查询来自同一个表。有什么解决办法吗?

  1. 从表名中选择不同的名称、模式、日期
  2. 从 table_name 中选择 COUNT(Mode)

Expected result

OnHand 列是 Mode 列中的 COUNT

最佳答案

如果我理解正确的话,你需要窗口函数:

SELECT column1, column2, column3,
SUM(COUNT(*)) OVER (PARTITION BY column2) as column2_cnt
FROM table_name 2
GROUP BY column1, column2, column3;

在每一行上,您将获得整个表格中column2 值的计数。。因此,这些值将在具有相同 column2 值的行上重复。

编辑:

根据您修改后的问题,您似乎想要:

SELECT name, mode, date,
COUNT(*) OVER (PARTITION BY name) as cnt
FROM table_name
GROUP BY name, mode, date;

您可以用其他方式表达这一点:

SELECT t.name, t.mode, t.date, tn.cnt
FROM table_name t JOIN
(SELECT name, COUNT(DISTINCT mode, date) as cnt
FROM table_name t
GROUP BY name
) tn
ON t.name = tn.name
GROUP BY t.name, t.mode, t.date, tn.cnt;

关于mysql - 如何同时对DISTINCT和COUNT进行SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58160782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com