group_concat 以及如何在 sqlite 中使用行号
Posted
技术标签:
【中文标题】group_concat 以及如何在 sqlite 中使用行号【英文标题】:group_concat and how to use row number in sqlite 【发布时间】:2013-05-26 03:13:14 【问题描述】:我有一个表中的数据,列 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
如何解决?
【问题讨论】:
您的第一个查询对我有用。 【参考方案1】:在您的情况下不需要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演示
【讨论】:
@PujaSury 您的问题需要更多帮助吗? 是的,我认为不需要GROUP_CONCAT()
这是我的查询,然后我更新您的答案SELECT _id, date(date) AS date, COUNT(*) 'count' from tbl where idDb=" + rowID + " GROUP BY DATE (date);
现在您的答案完美运行。惊人的。 @peterm【参考方案2】:
试试这个查询
select date(datetime) as date, count(*) as count from tbl
group by date(datetime)
FIDDLE
| date | count |
----------------------
| 2013-05-24 | 1 |
| 2013-05-28 | 2 |
| 2013-05-30 | 2 |
【讨论】:
以上是关于group_concat 以及如何在 sqlite 中使用行号的主要内容,如果未能解决你的问题,请参考以下文章
group_concat sqlite 和 order by
在 SQLite 的 GROUP_CONCAT 函数中使用 ORDER BY 子句