gpt4 book ai didi

java - Android SQLite 按频率排序条目而不分组

转载 作者:行者123 更新时间:2023-11-29 04:35:03 28 4
gpt4 key购买 nike

我正在尝试按行值频率降序对数据库记录进行排序,但不对条目进行分组。对不起,我是数据库的初学者。

完整代码如下:

SELECT   * 
FROM table_name
WHERE date_time >= 10
and date_time <= 100
GROUP BY activity_type
ORDER BY COUNT(activity_type) DESC

相关代码如下:

SELECT   * 
FROM table_name
GROUP BY activity_type
ORDER BY COUNT(activity_type) DESC

这是想要的结果(按activity_type出现频率降序排列,不分组):

name (irrelevant)    activity_type (number)
------------------------------------------------
Rome 1
London 1
Madrid 1
Stockholm 3
Paris 3
Moscow 2

最佳答案

不幸的是,SQLite 不支持子查询中的group by。因此,您的选择是外连接(它自己创建表的叉积,然后用 group by 剔除)或包含 activity_type 的临时表> 计数。

CREATE TABLE activity_count_table(activity_type, activity_count);

INSERT INTO activity_count_table
SELECT activity_type, COUNT(activity_type) AS activity_count
FROM table_name
WHERE date_time BETWEEN 10 AND 100
GROUP BY activity_type;

SELECT *
FROM table_name NATURAL JOIN activity_count_table
WHERE date_time BETWEEN 10 AND 100
ORDER BY activity_count_table.activity_count DESC;

DROP TABLE activity_count_table;

显然,这不是一个理想的解决方案。您可能希望在每次调用的名称 activity_count_table 中添加一些唯一标识符(以便多个查询不会相互干扰)。

它仍然比创建一个外部连接(它需要内存中的 n^2 行)然后用 group by 剔除它(当应用于自连接时实际上只是给你一个对角线)要好).

关于java - Android SQLite 按频率排序条目而不分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41987520/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com