gpt4 book ai didi

按特定字段分组和计数记录的Mysql子查询

转载 作者:行者123 更新时间:2023-11-29 05:20:15 28 4
gpt4 key购买 nike

我有这个问题:

我有一个car表,每条car记录都有一个state字段,state字段值可以是:

1 = 启用2 = 禁用

例如,在这种情况下,我需要显示所有按 color 字段分组的汽车并且按color计数,这真的不是问题:)

这里是SQL语句:

SELECT 
`id`,
`model_family`,
`color`,
COUNT(`color`) AS 'quantity',
`state`
FROM `auto`
WHERE `model_family` = 'Sedan'
GROUP BY `color`

+-----+--------------+------------+----------+---+
| id | model_family | color | quantity | state |
+-----+--------------+--------+----------+-------+
| 77 | Sedan | Red | 2 | 2 |
| 42 | Sedan | Blue | 3 | 2 |
| 97 | Sedan | Green | 5 | 1 |
+-----+--------------+--------+----------+-------+

结果显示两条禁用记录和一条启用记录。

好吧,问题是:

我怎样才能显示禁用和启用的汽车但是例如,如果对于第一个 grouped 记录,如果 state 被禁用 (state = 2)然后 quantity 字段将显示为 "0"(因为它不存在启用的汽车)else 数量 = n

像这样:

+-----+--------------+------------+----------+-------+
| id | model_family | color | quantity | state |
+-----+--------------+------------+----------+-------+
| 77 | Sedan | Red | 0 | 2 |
| 42 | Sedan | Blue | 0 | 2 |
| 97 | Sedan | Green | 5 | 1 |
+-----+--------------+------------+----------+-------+

再见!

最佳答案

SELECT 
`id`,
`model_family`,
`color`,
SUM(CASE WHEN state = 1 THEN 1 ELSE 0 END) as enabled,
SUM(CASE WHEN state = 2 THEN 1 ELSE 0 END) as disabled,
`state`
FROM `auto`
WHERE `model_family` = 'Sedan'
GROUP BY `color`

您必须使用案例语句将项目组合在一起。当它发现状态为 1 时,您需要将所有这些记录加在一起,这就是我执行 Then 1 Else 0 的原因。

这是一个简单的例子,说明如何做到这一点。我没有测试以确保它有效,但它应该有效。

关于按特定字段分组和计数记录的Mysql子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26807832/

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