group_concat以及如何在sqlite中使用行号 [英] group_concat and how to use row number in sqlite

查看:165
本文介绍了group_concat以及如何在sqlite中使用行号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在表中有数据,列ID和列日期

i have a data in a table, column id and column date

id  || datetime
1   || 2013-05-24 19:23:16
2   || 2013-05-28 19:24:20
3   || 2013-05-28 19:25:05  
4   || 2013-05-30 19:25:39  
5   || 2013-05-30 19:26:05  

如何查询仅显示带计数的一天?或带计数的一行.结果是.

how query to show only one day with count?or one row with count. so the result is.

    || datetime            || count
1   || 2013-05-24 19:23:16 ||  1
2   || 2013-05-28 19:24:20 ||  2
3   || 2013-05-30 19:25:39 ||  2

我尝试在mysql中运行,但有查询.

i try in mysql and it works , there is my query.

SELECT id, GROUP_CONCAT( datetime ) AS date, COUNT( id ) AS count
FROM dataPetak
GROUP BY DATE( datetime )

但是当我使用sqlite时,结果是将我全都放在一个字符串中

but when i use sqlite the result is gives me all in one string

5 || 2013-05-24 19:23:16,2013-05-28 19:24:20,2013-05-28 19:25:05,2013-05-30 19:25:39,2013-05-30 19:26:05 || 5

该如何解决?

救救我

编辑

当我使用查询

SELECT [datetime], [count] FROM (SELECT MAX([datetime]) 'datetime', COUN
T(*) 'count' FROM dataPetak GROUP BY CAST ([datetime] AS DATE)) t;

结果是

       2013-05-24 19:23:16 ||  1
       2013-05-28 19:24:20 ||  2
       2013-05-30 19:25:39 ||  2

如何在sqlite中使用行号?

how to use row number in sqlite?

所以结果是

1   || 2013-05-24 19:23:16 ||  1
2   || 2013-05-28 19:24:20 ||  2
3   || 2013-05-30 19:25:39 ||  2

当我尝试此查询时,

SELECT ROW_NUMBER () OVER (ORDER BY [datetime]) No, [datetime], [count] FROM (SELECT MAX([datetime]) 'datetime', COUN
T(*) 'count' FROM dataPetak GROUP BY CAST ([datetime] AS DATE)) t;

显示错误

Error: near "(": syntax error

该如何解决?

推荐答案

在您的情况下,无需使用GROUP_CONCAT()功能.您在问题中的最后一个查询是针对SQL Server的. Sqlite没有ROW_NUMBER()的实现.

There is no need for GROUP_CONCAT() functionality in your case. Your last query in the question is for SQL Server. Sqlite doesn't have implementation for ROW_NUMBER().

话虽如此,请尝试

SELECT 
 (
   SELECT COUNT(*) 
     FROM 
   ( SELECT 1
       FROM dataPetak
      WHERE id <= t.id
      GROUP BY DATE(datetime)
   ) q
 ) No, datetime, count
  FROM 
 (
   SELECT id, MIN(datetime) datetime, COUNT(*) count
     FROM dataPetak
    GROUP BY DATE(datetime)   
 ) t

输出:

| No |            datetime | count |
------------------------------------
|  1 | 2013-05-24 19:23:16 |     1 |
|  2 | 2013-05-28 19:24:20 |     2 |
|  3 | 2013-05-30 19:25:39 |     2 |

这里是 SQLFiddle 演示

Here is SQLFiddle demo

这篇关于group_concat以及如何在sqlite中使用行号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆