滥用聚合:在 SQLITE 中获取视图的最大值时使用 max()
misuse of aggregate: max() when getting the max of a view in SQLITE
我创建了一个 VIEW (VISIT_VIEW)
,它有两列,citizens 和 count(visitsDoctors) AS ToTal_Visits
:
CREATE VIEW VISIT_VIEW AS
SELECT citizen, COUNT(doctor) AS Total_Visits
FROM citizensvisits
GROUP BY citizen, doctor;
那returns每个公民去看医生的次数的列表
citizen1 1
citizen1 2
citizen1 5
...
citizen3 10
citizen3 4
然后我需要创建一个新视图来保存 TotalVisits 的 MAX 和每个公民
CREATE VIEW MAXVISITS AS
SELECT citizens, Total_Visits AS MaxTotal_Visits
FROM VISIT_VIEW
WHERE MaxTotal_Visits = max("Total_Visits")
GROUP BY citizens, MaxTotal_Visits;
所以当尝试
SELECT *
FROM MAXVISIT_VIEW
我明白了
Result: misuse of aggregate: max()
我做错了什么?
编辑:我已经放置了 VISIT_VEW
代码并澄清一下,我需要一个新视图来列出每个公民的最大访问次数,即
citizen1 5
citizen3 10
我可能完全错了,但我相信你需要做一个子 select
类似这样,但不完全是
CREATE VIEW MAXVISITS AS
SELECT citizens, Total_Visits AS MaxTotal_Visits
FROM VISIT_VIEW
WHERE MaxTotal_Visits = (SELECT MAX(Total_Visits) FROM VISIT_VIEW)
GROUP BY citizens, MaxTotal_Visits;
可能有也可能没有其他问题。包括我的解决方案。
您不能直接使用 MAX()
聚合函数。
您必须重新聚合:
CREATE VIEW MAXVISITS AS
SELECT citizen, MAX(Total_Visits) AS MaxTotal_Visits
FROM VISIT_VIEW
GROUP BY citizen
或不使用 VISIT_VIEW
,直接从 table 中选择 MAX()
window 函数:
CREATE VIEW MAXVISITS AS
SELECT DISTINCT citizen,
MAX(COUNT(*)) OVER (PARTITION BY citizen) AS Total_Visits
FROM citizensvisits
GROUP BY citizen, doctor;
我创建了一个 VIEW (VISIT_VIEW)
,它有两列,citizens 和 count(visitsDoctors) AS ToTal_Visits
:
CREATE VIEW VISIT_VIEW AS
SELECT citizen, COUNT(doctor) AS Total_Visits
FROM citizensvisits
GROUP BY citizen, doctor;
那returns每个公民去看医生的次数的列表
citizen1 1
citizen1 2
citizen1 5
...
citizen3 10
citizen3 4
然后我需要创建一个新视图来保存 TotalVisits 的 MAX 和每个公民
CREATE VIEW MAXVISITS AS
SELECT citizens, Total_Visits AS MaxTotal_Visits
FROM VISIT_VIEW
WHERE MaxTotal_Visits = max("Total_Visits")
GROUP BY citizens, MaxTotal_Visits;
所以当尝试
SELECT *
FROM MAXVISIT_VIEW
我明白了
Result: misuse of aggregate: max()
我做错了什么?
编辑:我已经放置了 VISIT_VEW
代码并澄清一下,我需要一个新视图来列出每个公民的最大访问次数,即
citizen1 5
citizen3 10
我可能完全错了,但我相信你需要做一个子 select
类似这样,但不完全是
CREATE VIEW MAXVISITS AS
SELECT citizens, Total_Visits AS MaxTotal_Visits
FROM VISIT_VIEW
WHERE MaxTotal_Visits = (SELECT MAX(Total_Visits) FROM VISIT_VIEW)
GROUP BY citizens, MaxTotal_Visits;
可能有也可能没有其他问题。包括我的解决方案。
您不能直接使用 MAX()
聚合函数。
您必须重新聚合:
CREATE VIEW MAXVISITS AS
SELECT citizen, MAX(Total_Visits) AS MaxTotal_Visits
FROM VISIT_VIEW
GROUP BY citizen
或不使用 VISIT_VIEW
,直接从 table 中选择 MAX()
window 函数:
CREATE VIEW MAXVISITS AS
SELECT DISTINCT citizen,
MAX(COUNT(*)) OVER (PARTITION BY citizen) AS Total_Visits
FROM citizensvisits
GROUP BY citizen, doctor;