SQL: 改变查询结构
SQL: Changing structure of query
我有一个查询成功 returns 单个值,其中 "day" 在查询中被硬编码,如下所示:
SELECT MAX(theCount) FROM
(SELECT FK_Hour, Count(FK_Hour) As theCount FROM
(Select FK_Hour
From slottime
INNER JOIN time ON slottime.FK_Hour = time.Hour
WHERE FK_Hour IN
(SELECT time.Hour FROM time WHERE time.day=0 )
) As C
GROUP By FK_Hour
) AS counts;
我正在尝试删除这种硬编码,这样两列;即
day:theCount 被退回。
我试过了
SELECT MAX(theCount), day FROM
(SELECT FK_Hour, day As day, Count(FK_Hour) As theCount FROM
(Select slottime.FK_Hour, time.day
From slottime
INNER JOIN time ON slottime.FK_Hour = time.Hour
) As C
GROUP By FK_Hour
) AS counts
GROUP By day;
并执行。但是它returns的值显然不正确(与被查询表中的数据没有明显的关联)
在第一个示例中,如果我没看错,您将获得每个 fk_hour 值在 day = 0 的记录数,并从中选择最大计数。
要对所有天执行此操作,首先编写聚合查询以获取每一天和每一小时对的计数,如下所示:
SELECT t.day, t.hour, COUNT(*) AS numRecords
FROM time t
GROUP BY t.day, t.hour;
一旦你有了它,你就可以通过使用限制 1 来获得最大值:
SELECT t.day, t.hour, COUNT(*) AS numRecords
FROM time t
GROUP BY t.day, t.hour
ORDER BY COUNT(*) DESC
LIMIT 1;
此查询将return 一行,并告诉您在哪一天和哪一小时出现了最多的记录数。
我有一个查询成功 returns 单个值,其中 "day" 在查询中被硬编码,如下所示:
SELECT MAX(theCount) FROM
(SELECT FK_Hour, Count(FK_Hour) As theCount FROM
(Select FK_Hour
From slottime
INNER JOIN time ON slottime.FK_Hour = time.Hour
WHERE FK_Hour IN
(SELECT time.Hour FROM time WHERE time.day=0 )
) As C
GROUP By FK_Hour
) AS counts;
我正在尝试删除这种硬编码,这样两列;即 day:theCount 被退回。
我试过了
SELECT MAX(theCount), day FROM
(SELECT FK_Hour, day As day, Count(FK_Hour) As theCount FROM
(Select slottime.FK_Hour, time.day
From slottime
INNER JOIN time ON slottime.FK_Hour = time.Hour
) As C
GROUP By FK_Hour
) AS counts
GROUP By day;
并执行。但是它returns的值显然不正确(与被查询表中的数据没有明显的关联)
在第一个示例中,如果我没看错,您将获得每个 fk_hour 值在 day = 0 的记录数,并从中选择最大计数。
要对所有天执行此操作,首先编写聚合查询以获取每一天和每一小时对的计数,如下所示:
SELECT t.day, t.hour, COUNT(*) AS numRecords
FROM time t
GROUP BY t.day, t.hour;
一旦你有了它,你就可以通过使用限制 1 来获得最大值:
SELECT t.day, t.hour, COUNT(*) AS numRecords
FROM time t
GROUP BY t.day, t.hour
ORDER BY COUNT(*) DESC
LIMIT 1;
此查询将return 一行,并告诉您在哪一天和哪一小时出现了最多的记录数。