gpt4 book ai didi

mysql - SQL 计算具有多个Where 可能性的表中的不同值

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

问题很简单。如何将以下 2 个 sql 查询合并为一个。

我在 MYSQL Workbase UI 上使用 MYSQL v8.0.16。

SELECT Node_Type, COUNT(*)  AS `count`
FROM node_table_vis
WHERE Node_SpinePlanID = "1"
GROUP BY Node_Type;

返回

TYPE - COUNT
-----------
AGN 18
TJ 26
DSLAM 15
PON 18
CCJ 17

SELECT DISTINCT Node_SpinePlanID
FROM node_table_vis
WHERE Node_Exchange = "Exchange 1";

这就是返回

SpinePlanID
------------
1
5
10

所以本质上我想要的是像这样的查询?

SELECT Node_Type, COUNT(*)  AS `count`
FROM node_table_vis
WHERE Node_SpinePlanID =
(
SELECT DISTINCT Node_SpinePlanID
FROM node_table_vis
WHERE Node_Exchange = "Exchange 1";
)
GROUP BY Node_Type;

所以我得到的表格看起来像

TYPE -  1  -  5  -  10
-----------------------
AGN 18 x y
TJ 26 x y
DSLAM 15 x y
PON 18 x y
CCJ 17 x y

所以这只是抛出错误而不是生产 cargo 。我能够找到顶部查询的答案,我能够找到底部查询的答案,但是我无法找到将两者结合起来的答案。

如有任何建议,我们将不胜感激。

更新/编辑

我有以下内容...

SET @@group_concat_max_len = 10000;
SET @sql = null;
SELECT group_concat(distinct
concat(
'SUM(Node_SpinePlanID = ''',
Node_SpinePlanID,
''',) AS ',
Node_SpinePlanID
)
) INTO @sql
FROM node_table_vis;

SET @sql = CONCAT('SELECT Node_Type, ', @sql, ' FROM node_table_vis GROUP BY Node_Type');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

但是 PREPARE stmt 不起作用?收到错误代码 1064 您有 SQL 错误语法吗?

对此有什么建议吗?

最佳答案

您在寻找条件聚合吗?

SELECT Node_Type,
SUM(Node_SpinePlanID = 1) AS count_1,
SUM(Node_SpinePlanID = 5) AS count_5,
SUM(Node_SpinePlanID = 10) AS count_10
FROM node_table_vis
GROUP BY Node_Type;

您还可以将值放入行中:

SELECT Node_Type, Node_SpinePlanID, COUNT(*) as cnt
FROM node_table_vis
GROUP BY Node_Type, Node_SpinePlanID;

如果没有动态 SQL,您能做的最好的可能是将这些值放在一行中,即将它们放在具有两个聚合级别的字符串中:

SELECT Node_Type, GROUP_CONCAT(Node_SpinePlanID, ':', cnt SEPARATOR ',')
FROM (SELECT Node_Type, Node_SpinePlanID, COUNT(*) as cnt
FROM node_table_vis
GROUP BY Node_Type, Node_SpinePlanID
) ts
GROUP BY Node_Type;

关于mysql - SQL 计算具有多个Where 可能性的表中的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58249398/

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