gpt4 book ai didi

mysql - 带有嵌套子查询的 COUNT()

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

我可以用特定列中某个字符的实例数来计算列吗?

+---+---+
| i | p |
+---+---+
| A | 3 |
| B | 3 |
| C | 0 |
| A | 1 |
| B | 1 |
| C | 3 |
| A | 1 |
| B | 0 |
| C | 0 |
+---+---+

查询:

SELECT i, SUM(p) AS Sp, COUNT(p) AS Cp FROM table   
GROUP BY i

我想得到这个:

+---+----+----+-----+-----+-----+
| i | Sp | Cp | x3x | x1x | x0x |
+---+----+----+-----+-----+-----+
| A | 5 | 3 | 1 | 2 | 0 |
| B | 4 | 3 | 1 | 1 | 0 |
| C | 4 | 3 | 1 | 0 | 2 |
+---+----+----+-----+-----+-----+

本质上我想计算列中 3、0 或 1 的实例,其中该列按 id 'i' 分组

我尝试了这个以及许多变体,但我似乎无法让它继续下去。COUNT(P WHERE p='3'), COUNT(P WHERE p='1'), COUNT(P WHERE p='0'),

有没有一种方法可以在我的研究中遗漏的 COUNT() 中放置子查询?

我也尝试过

COUNT(Points='3'), COUNT(='1'), COUNT(Points='0'),

最佳答案

你很接近:

select i, sum(points), count(*),
sum(Points = 3), sum(points = 1), sum(Points = 0)
from t
group by i;

本例中的一个细微差别是删除了值周围的单引号。与数字进行比较时,不要使用单引号。仅对字符串和日期常量使用单引号。

更重要的变化是从 count()sum()count() 计算非 NULL 值的数量。嗯, bool 表达式是 true 或 false - 但不是真正的 NULL (除非 pointsNULL,而您的数据并非如此)。

MySQL 将 bool 值视为数字上下文中的整数,0 表示 false,1 表示 true。因此,将它们相加就可以计算出某件事为真的次数。

关于mysql - 带有嵌套子查询的 COUNT(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033318/

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