gpt4 book ai didi

sql - 如何在firebird中使用GROUP BY

转载 作者:行者123 更新时间:2023-12-04 10:04:23 25 4
gpt4 key购买 nike

T_TABLE2的结构是

ID INT
TBL1_ID INT
TESTER VARCHAR
LOT_ID VARCHAR
GRP VARCHAR
SITE_NUM INT
TEST_NUM VARCHAR
TEST_DESC VARCHAR
MEASUREMENT DOUBLE PRECISION
UNIT VARCHAR
LL DOUBLE PRECISION
UL DOUBLE PRECISION
STATUS VARCHAR


我在firebird中使用SQL编辑器测试了我的查询。查询是

SELECT TEST_DESC, MEASUREMENT, LL, UL 
FROM T_TABLE2
GROUP BY TEST_DESC


但我在分组时遇到了这个错误。

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).

最佳答案

您必须来自MySQL。 MySQL-IMHO误导,错误且以一种黑变的,不可预测的方式-允许您指定部分GROUP BY查询,并且数据库引擎会尝试从查询的其余部分中找出未分组的值-按您想要的列。另一方面,标准SQL(Firebird和大多数其他RDBMS)不支持;它要求将任何非聚合列包含在分组依据中,并且需要任何非分组依据列来明确指定所需的行。

在您的情况下,有问题的列是MEASUREMENTLLUL。您需要指定所需的MEASUREMENTLLUL(是的,即使它们都相同;数据库引擎也无法知道或保证这一点),或者是否要分组一列或多列,或者您可能忘记了汇总(是否要SUM?)



有效查询的示例:


按所有列分组(相当于SELECT DISTINCT):

SELECT TEST_DESC, MEASUREMENT, LL, UL
FROM T_TABLE2
GROUP BY TEST_DESC, MEASUREMENT, LL, UL

也按 MEASUREMENT分组,并返回 MIN LL和 MAX UL:

SELECT TEST_DESC, MEASUREMENT, MIN(LL), MAX(UL)
FROM T_TABLE2
GROUP BY TEST_DESC, MEASUREMENT

SUM未分组的列:

SELECT TEST_DESC, SUM(MEASUREMENT), SUM(LL), SUM(UL)
FROM T_TABLE2
GROUP BY TEST_DESC

聚合的组合:

SELECT TEST_DESC, COUNT(DISTINCT MEASUREMENT), SUM(LL), MAX(UL)
FROM T_TABLE2
GROUP BY TEST_DESC

关于sql - 如何在firebird中使用GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171901/

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