SQL查询以计数记录
我有一张桌子SQL查询以计数记录,sql,mysql,android,sqlite,Sql,Mysql,Android,Sqlite,我有一张桌子 EntryLog(Name String, CheckIn Boolean) 我想根据每个名字计算签入的次数。如何编写查询以将结果作为单个结果集获取?尝试: SELECT Name, COUNT(*) FROM EntryLog WHERE CheckIn GROUP BY Name 除了标准的sqlite,您肯定没有单独的mysql数据库吗?我建议重新标记。但它是否只获取签入为真的记录?不,但您肯定可以自己实现该部分现在有了。重要的一点是IMHO通过Group进行的聚合。还要
EntryLog(Name String, CheckIn Boolean)
我想根据每个名字计算签入的次数。如何编写查询以将结果作为单个结果集获取?尝试:
SELECT Name, COUNT(*) FROM EntryLog WHERE CheckIn GROUP BY Name
除了标准的sqlite,您肯定没有单独的mysql数据库吗?我建议重新标记。但它是否只获取签入为真的记录?不,但您肯定可以自己实现该部分现在有了。重要的一点是IMHO通过Group进行的聚合。还要注意,要获得记录计数结果,请使用cursor.moveToFirst,然后在结果记录的第一个字段中获取数字:cursor。getInt0@Brad,它不是cursor.getInt1吗?或者更好地使用Cursor.getColumnIndexmethod@Brad-你确定?如果我错了,请纠正我的错误,但我确信selectname,Count*将返回两个字段,一个名为“NAME”,一个名为“Count*”。如果这是正确的,那么调用getInt0将尝试从第一个字段中获取一个整数,该字段将是名为“Name”的列。这可能/可能不会引发错误。在我看来,OP可能希望使用cursor.getString0来获取“Name”列,而cursor.getInt1来获取count列。@Hamy感谢您发现了我的错误。由于正在查询两个字段,因此光标中将有两个字段。第一个字段是Name,第二个字段是我们要查找的计数。因此,您可能需要如您所述的getInt1。
SELECT COUNT(1) FROM EntryLog WHERE CheckIn = 1 GROUP BY [Name]
SELECT name,
COUNT(*)
FROM EntryLog
WHERE CheckIn
GROUP BY name;