Sql 如何检索表中特定ID的列的最频繁值
我试图从SQLite 3数据库表中获取每个特定ID(即公司ID)的最频繁值。我试过使用Sql 如何检索表中特定ID的列的最频繁值,sql,sqlite,Sql,Sqlite,我试图从SQLite 3数据库表中获取每个特定ID(即公司ID)的最频繁值。我试过使用groupby和orderby以及COUNT()函数 SELECT company_id, max(car) FROM car_orders GROUP by company_id ORDER by max(car) 对于特定的公司id(9),我预计“奥迪”会出现,但情况并非如此,因为其“大众”(这是错误的)在SQLite的最新版本中,您可以使用窗口功能: SELECT cc.* FROM (SELECT
groupby
和orderby
以及COUNT()
函数
SELECT company_id, max(car)
FROM car_orders
GROUP by company_id
ORDER by max(car)
对于特定的公司id(9),我预计“奥迪”会出现,但情况并非如此,因为其“大众”(这是错误的)在SQLite的最新版本中,您可以使用窗口功能:
SELECT cc.*
FROM (SELECT company_id, car, COUNT(*) as cnt,
ROW_NUMBER() OVER (PARTITION BY company_id ORDER BY COUNT(*) DESC) as seqnum
FROM car_orders
GROUP by company_id, car
) cc
WHERE seqnum = 1;
在早期版本中,它稍微复杂一些:
WITH cc as (
SELECT company_id, car, COUNT(*) as cnt
FROM car_orders
GROUP by company_id, car
)
SELECT cc.*
FROM cc
WHERE cc.cnt = (SELECT MAX(cc2.cnt)
FROM cc cc2
WHERE cc2.company_id = cc.company_id
);
在较新版本的SQLite中,可以使用窗口函数:
SELECT cc.*
FROM (SELECT company_id, car, COUNT(*) as cnt,
ROW_NUMBER() OVER (PARTITION BY company_id ORDER BY COUNT(*) DESC) as seqnum
FROM car_orders
GROUP by company_id, car
) cc
WHERE seqnum = 1;
在早期版本中,它稍微复杂一些:
WITH cc as (
SELECT company_id, car, COUNT(*) as cnt
FROM car_orders
GROUP by company_id, car
)
SELECT cc.*
FROM cc
WHERE cc.cnt = (SELECT MAX(cc2.cnt)
FROM cc cc2
WHERE cc2.company_id = cc.company_id
);
类似于您的尝试,考虑加入两个聚集体,计算每辆车和公司的代码>计数>代码>和每个公司的同一计数器<代码> max >代码>。下面介绍了SQLite版本3.8.3中引入的用法,于发布
类似于您的尝试,考虑加入两个聚集体,计算每辆车和公司的代码>计数>代码>和每个公司的同一计数器<代码> max >代码>。下面介绍了SQLite版本3.8.3中引入的用法,于发布
样本数据和预期结果将有所帮助。你的问题令人困惑,因为你提到了
id
,但在查询中却有company\u id
。对此我非常抱歉。它应该是公司ID,而不是ID。采样数据和期望的结果会有所帮助。你的问题令人困惑,因为你提到了id
,但在查询中却有company\u id
。对此我非常抱歉。应该是公司ID而不是ID谢谢你。那真的很酷。现在它实际上给了我正确的结果。再次非常感谢。我刚刚意识到我需要继续练习我的SQL技能,以迎头赶上!非常感谢你。那真的很酷。现在它实际上给了我正确的结果。再次非常感谢。我刚刚意识到我需要继续练习我的SQL技能,以迎头赶上!现在开始工作了。但还是非常感谢你的解决方案。现在我面临一个问题,我必须解决一个sql子查询语句,因为代码不能在Python上运行。我收到“OperationalError,near SELECT”-error如果没有完整的Python代码块,我无法确定该错误是如何产生的。如果要传递整个SQL语句,包括和在游标内。execute()
它应该可以工作。检查sqlite3.sqlite\u版本
(假设您导入sqlite3
),查看版本是否高于3.8.3。这支持CTE。它现在正在工作。但还是非常感谢你的解决方案。现在我面临一个问题,我必须解决一个sql子查询语句,因为代码不能在Python上运行。我收到“OperationalError,near SELECT”-error如果没有完整的Python代码块,我无法确定该错误是如何产生的。如果要传递整个SQL语句,包括和在游标内。execute()
它应该可以工作。检查sqlite3.sqlite\u版本
(假设您导入sqlite3
),查看版本是否高于3.8.3。这支持CTE。