Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何对每列使用Rank(),并获取顶部和底部的3个值_Android_Sqlite - Fatal编程技术网

Android 如何对每列使用Rank(),并获取顶部和底部的3个值

Android 如何对每列使用Rank(),并获取顶部和底部的3个值,android,sqlite,Android,Sqlite,您好,我发现很难实现Rank()函数,下面是我的示例表 id category value volume 1 product1 0.4 0.5 2 product2 0.9 0.6 3 product3 0.3 0.7 4 product4 0.19 0.59 现在我想分别对“value”和“volume”列进行排名,并获得每列的前3名和后3名,我正在firefox浏览

您好,我发现很难实现Rank()函数,下面是我的示例表

id     category   value   volume
1      product1     0.4     0.5 
2      product2     0.9     0.6  
3      product3     0.3     0.7
4      product4     0.19    0.59 
现在我想分别对“value”和“volume”列进行排名,并获得每列的前3名和后3名,我正在firefox浏览器sqlmanager中测试下面的代码。但这个查询不起作用

SELECT Value, RANK() 
OVER (ORDER BY Value DESC) AS xRank 
FROM (SELECT Value FROM product_achievment) WHERE xRank>=3;
感谢您的帮助

  • is not不支持
    排名
  • 您有四个不同的查询,必须
    UNION
  • 因此,以下查询将返回所需的行:

    SELECT * FROM product_achievement ORDER BY value LIMIT 3
    UNION
    SELECT * FROM product_achievement ORDER BY value DESC LIMIT 3
    UNION
    SELECT * FROM product_achievement ORDER BY volume LIMIT 3
    UNION
    SELECT * FROM product_achievement ORDER BY volume DESC LIMIT 3;
    
    排名的变通方法

    如果您还需要排名信息,我建议创建一个带有排名的
    视图

    CREATE VIEW ranked_product_achievement AS
    SELECT *,
    (SELECT COUNT() FROM product_achievement WHERE value<=t.value) AS r_value_a,
    (SELECT COUNT() FROM product_achievement WHERE value>=t.value) AS r_value_d,
    (SELECT COUNT() FROM product_achievement WHERE volume<=t.volume) AS r_volume_a,
    (SELECT COUNT() FROM product_achievement WHERE volume>=t.volume) AS r_volume_d
    FROM product_achievement AS t;
    
    SELECT id, category, value, volume, r_value_a, r_volume_a
    FROM ranked_product_achievement
    WHERE r_value_a<=3 OR r_value_d<=3 OR r_volume_a<=3 OR r_volume_d<=3;