UserGroup by & order by 过滤 MySQL 查询
Posted
技术标签:
【中文标题】UserGroup by & order by 过滤 MySQL 查询【英文标题】:UserGroup by & order by to filter the MySQL query 【发布时间】:2018-11-24 15:31:50 【问题描述】:我编写了一个查询来对列中的绿色状态和红色状态求和,并根据节点名称对它们进行分组。
SELECT `Node`, Date(`DOR`) as "Date of Report",
SUM(CASE WHEN `Color` = 'Green' THEN 1 ELSE 0 END) 'Pass'
, SUM(CASE WHEN `Clor` = 'Red' THEN 1 ELSE 0 END) 'Fail'
, SUM(CASE WHEN `Color` = 'Green' or `Color` = 'Red' THEN 1 ELSE 0 END) 'Total Checks'
FROM Monitor Where date(`TOI`) >= DATE(NOW()) - INTERVAL 7 DAY
Group by `Node`
如何通过过滤掉 Red 为 0 的结果(我不想显示它是否为 0,因为不需要注意)并根据 Reds 计数按 Desc 顺序排序,从而使查询更好?
谢谢,
【问题讨论】:
您的查询有很多问题。您按Server
分组,然后选择Node
和DOR
。您应该包含示例数据来解释您在此处尝试执行的操作。
对不起,这是我的错误。我正在选择节点并按节点分组。更正了我的问题。谢谢
【参考方案1】:
只是为了回答您关于过滤 Reds = 0 & order desc on Reds count 的问题:
SELECT `Node`, Date(`DOR`) as "Date of Report",
SUM(CASE WHEN `Color` = 'Green' THEN 1 ELSE 0 END) as Pass
, SUM(CASE WHEN `Clor` = 'Red' THEN 1 ELSE 0 END) as Fail
, SUM(CASE WHEN `Color` = 'Green' or `Color` = 'Red' THEN 1 ELSE 0 END) as Total Checks
FROM Monitor Where date(`TOI`) >= DATE(NOW()) - INTERVAL 7 DAY
Group by `Server`
HAVING Fail > 0
order by Reds desc
但是,正如 Tim 所提到的,您在查询中遇到问题,例如,您正在按服务器分组,但随后选择了 Node
和 DOR
。
尝试包含表结构和示例数据,以便我们能够更好地理解问题并为您提供正确的答案
【讨论】:
对不起,这是我的错误。我正在选择节点并按节点分组。更正了我的问题。谢谢 我的回答应该对你有用。尝试一下。如果有帮助,请接受/支持以上是关于UserGroup by & order by 过滤 MySQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
postgresql----排序ORDER BY,分组GROUP BY,分页OFFSET&&LIMIT
Kohana ORM(自定义查询)与 MySQL ORDER BY & GROUP BY
LIMIT&限制查询结果的数量&ORDER BY&排序&分页