gpt4 book ai didi

mysql - 简单的 MYSQL 计数、分组依据,无法使用 Pentaho Report Designer CE 工作

转载 作者:行者123 更新时间:2023-11-29 12:13:52 25 4
gpt4 key购买 nike

我需要编写一个查询,该查询将从两个不同的表中提取结果,计算结果并在一行中返回总结果。

我遇到了一些问题。当我不带计数表达式运行查询时,返回 645 行。 645 是正确的数字,我想返回 1 行,显示总数为“645”。

当我使用计数表达式时,它会计算一个表中的总行数,而不是两个表中的总行数,因此使用计数表达式时,我返回 761(这是没有子句的总行数)生效)。

SELECT
`cuesheet_tx_dates`.`txdate`,
`cuesheet_tx_dates`.`trans_station`,
`cuesheets`.`status`,
count(`cuesheet_tx_dates`.`txdate`)
FROM
`cuesheet_tx_dates` INNER JOIN `cuesheets` ON `cuesheet_tx_dates`.`cuesheets_id` = `cuesheets`.`id`
WHERE
`cuesheet_tx_dates`.`txdate` BETWEEN "15-01-01"AND "15-01-31"
AND `cuesheet_tx_dates`.`trans_station` = "HIS"
HAVING
`cuesheets`.`status` = "C"

如果我使用 Group By,查询将不会与having 子句一起运行。我不知道为什么,它就是拒绝运行。这将显示 2 行,其中 1 行显示 645,另一行显示 116 (116 + 645 = 761)。任何帮助将不胜感激。

我是 MYSQL 新手,没有培训,没有监督,没有团队提供帮助,只有互联网,所以请原谅我说过或做过的任何愚蠢的事情

最佳答案

如果您想要一个返回一个结果并进行过滤的查询,那么我期待这样的结果:

SELECT count(*)
FROM cuesheet_tx_dates td INNER JOIN
cuesheets s
ON td.cuesheets_id = s.id
WHERE td.txdate BETWEEN '2015-01-01' and '2014-01-31' AND
td.trans_station = 'HIS' AND
s.status = 'C';

我所做的更改主要是为了可读性:

  • 更短的表别名。
  • 字符串分隔符为'而不是"(第一个是ANSI标准)
  • 删除了 HAVING 子句,该子句几乎从未在没有 group by 的聚合查询中使用。
  • 使用 ISO 标准格式作为日期常量。

关于mysql - 简单的 MYSQL 计数、分组依据,无法使用 Pentaho Report Designer CE 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194456/

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