gpt4 book ai didi

mysql - 使用 GROUP BY 时如何获取所有行?

转载 作者:行者123 更新时间:2023-11-29 02:21:17 26 4
gpt4 key购买 nike

我有一个类似下面的数据库:

id | col_1 | col_2
------------------
1 | a | x
2 | a | x
3 | b | x
4 | b | z
5 | c | x

我正在尝试获取匹配 col_2 = x 加上 col_1 的频率的所有行,按频率排序。例如,输出将是:

id | col_1 | col_2 | freq
-------------------------
1 | a | x | 2
2 | a | x | 2
3 | b | x | 1
5 | c | x | 1

我尝试了各种查询,但因为我使用 GROUP BY 来获取频率,所以我无法获取单独的行(因为我需要每个 ID)。例如:

SELECT *, COUNT(col_1) AS freq
FROM mytable WHERE col_2 = x
GROUP BY col_1
ORDER BY freq DESC

不幸的是,这并没有给我所有的行。它遗漏了 id = 2。任何帮助将不胜感激!

谢谢!

最佳答案

您的 freq 列看起来像一个独立的表范围行数,其中 col_2 = 'x',按 id 分组。您可以使用此查询获取:

这是 SQL FIDDLE DEMO

SELECT
col_1,
COUNT(*) AS freq
FROM myTable
WHERE col_2 = 'x'
GROUP BY col_1

将它加入到单个 id 值的查询中,您应该会得到您想要的结果:

SELECT
id,
col_1,
col_2,
col2Summary.freq
FROM myTable
INNER JOIN (
SELECT
col_1,
COUNT(*) AS freq
FROM myTable
WHERE col_2 = 'x'
GROUP BY col_1
) col2Summary ON myTable.col_1 = col2Summary.col_1
WHERE col_2 = 'x'
ORDER BY freq DESC

关于mysql - 使用 GROUP BY 时如何获取所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496752/

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