如何解决在 SQLITE 中获取视图的最大值时滥用聚合:max()
我创建了一个 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;
返回每个公民看医生次数的列表
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
我明白
结果:滥用聚合:max()
我做错了什么?
编辑:我已经放置了 VISIT_VEW
代码并澄清,我需要一个新视图,该视图应该列出每个公民的 MAX 访问次数,即
citizen1 5
citizen3 10
解决方法
您不能直接使用 MAX()
聚合函数。
您必须再次聚合:
CREATE VIEW MAXVISITS AS
SELECT citizen,MAX(Total_Visits) AS MaxTotal_Visits
FROM VISIT_VIEW
GROUP BY citizen
或者不使用VISIT_VIEW
,直接从表格中选择MAX()
窗口函数:
CREATE VIEW MAXVISITS AS
SELECT DISTINCT citizen,MAX(COUNT(*)) OVER (PARTITION BY citizen) AS Total_Visits
FROM citizensvisits
GROUP BY citizen,doctor;
,
我可能错了,但我相信你需要做一个子选择
类似的东西,但不完全是
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;
可能有也可能没有其他问题。包括我的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。