我试图选择按状态分组的COUNT个最大值(因此,状态中每个不同的值一个最大值)。计数功能按预期工作。
print(glob('C90-01/*.pdf'))
这是结果,
我使用下面的SQL语句尝试选择按状态分组的最大计数。
SELECT c.id, c.name, t.name as type, COUNT(*) as count, c.state
FROM bookings_facilities f
JOIN bookings b
ON b.id = f.booking_id
JOIN clients c
ON c.id = b.client_id
JOIN client_types t
ON c.type = t.id
WHERE t.name = "School"
GROUP BY c.id
这是结果,
在SELECT *, MAX(z.count)
FROM (SELECT c.id, c.name, t.name as type, COUNT(*) as count, c.state
FROM bookings_facilities f
JOIN bookings b
ON b.id = f.booking_id
JOIN clients c
ON c.id = b.client_id
JOIN client_types t
ON c.type = t.id
WHERE t.name = "School"
GROUP BY c.id) z
GROUP BY z.state
中只出现一次的3个状态似乎很好,但是对于在第一个结果中出现两次的状态result 1
,则存在一些问题。
SQL查询选择了正确的MAX(Count),即6,但是与其返回id为1027,它返回的id为1002,但在第一个结果中其计数仅为1。
我尝试使用不同的数据集进行尝试,但似乎无法获得实际MAX(Count)行的详细信息。
这是数据库设计参考
预期结果是这样(仅第二行输出需要更改)。 Current Output Link
答案 0 :(得分:2)
自you can use MySQL 8.0起,我们可以使用Window Functions解决您的问题。在w
的分区上,我们将确定Row_Number()
的行数最高的行为行号1,依此类推。现在,对于特定的wb
,我们只需要考虑那些行号为1的行。
另外,您尝试使用['ansible-playbook', '--private-key=/path/to/tempfile.pem', '-i', 'ec2-XX-XXX-XX-XX.compute-1.amazonaws.com,', '-e', 'hostname=ec2-XX-XXX-XX-XX.compute-1.amazonaws.com', '-e', ...]
无效的SQL。较旧版本的MySQL宽容并允许使用。但是更新的版本不会,除非您关闭严格的state
模式。但是,您不应禁用它,而应修复查询。基本要点是,在使用state
时,您的GROUP BY
子句应只包含聚合的列/表达式和/或在列表中定义的列/表达式。 only_full_group_by
子句。阅读:Error related to only_full_group_by when executing a query in MySql
Group By
结果:
Select