gpt4 book ai didi

mysql - 我们如何使用 MySQL 单个查询获得多列计数(TOP)?

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

我的表结构如下:

id  | ex_name | att_name 
10 | David | sam G&G
12 | John | mark hol
13 | John | john b
14 | Mark | john c
15 | David | mark hol
16 | David | mark hol
17 | Mark | sam G&G
18 | John | john b
19 | David | sam G&G
20 | John | sam G&G

当我使用以下查询时:

SELECT att_name
, count(att_name) as att_count
FROM `tablename`
group
by att_name
order
by att_count desc

返回:

sam G&G = 4
mark hol = 3
john b = 2
john c = 1

我想要输出的最高值,即 sam G&G 这是 4

与它返回的列 ex_name 相同:

David = 4
john = 4
mark = 2

我想要 ex_name 列的最高值,即 David 和 John 的计数为 4

我想要的最终输出是这样的:

ex_name | att_name | ex_count | att_count
David Sam G&G 4 4
John 4

我也尝试在下面的查询中获取输出,但在这种情况下,我得到 ex_name 并且 att_name 为 NULL。

SELECT a.att_name,b.att_name,max(a.ex_count),max(b.att_count)
FROM application_data
INNER JOIN (
SELECT ex_name,count(ex_name) as ex_count
FROM application_data
GROUP BY ex_name
) a
INNER JOIN (
SELECT att_name ,count(att_name) as att_count
FROM application_data
GROUP BY att_count
) b

它返回:

ex_name | att_name | ex_count | att_count
NULL NULL 4 4

你能帮我吗?提前致谢

最佳答案

您似乎想按某些列聚合您的表,然后保留共享最高计数的所有组记录。一种方法是将 HAVING 子句添加到您当前的查询中,该子句断言要保留的组的计数是所有组中的最高计数。

SELECT att_name, COUNT(*) AS cnt
FROM tablename
GROUP BY att_name
HAVING COUNT(*) = (SELECT COUNT(*) FROM tablename
GROUP BY att_name ORDER BY COUNT(*) DESC LIMIT 1);

Demo

关于mysql - 我们如何使用 MySQL 单个查询获得多列计数(TOP)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54574894/

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