[英]group_concat and how to use row number in sqlite
我在表,列ID和列日期中有数据
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
如何查询只显示一天的计数?或一行显示的计数。 结果是。
|| 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中运行,但是有我的查询。
SELECT id, GROUP_CONCAT( datetime ) AS date, COUNT( id ) AS count
FROM dataPetak
GROUP BY DATE( datetime )
但是当我使用sqlite时,结果是在一串给我
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中使用行号?
所以结果是
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()
。
话虽如此,尝试
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演示
试试这个查询
select date(datetime) as date, count(*) as count from tbl
group by date(datetime)
| date | count |
----------------------
| 2013-05-24 | 1 |
| 2013-05-28 | 2 |
| 2013-05-30 | 2 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.