分组的最高值我有一个SQLite表保持每播放的曲目中的一排打日期/时间 现在我将计算所有艺术家的戏剧,按天分组然后每天以最大playcount找到艺术家。 我用这个查询SQL - 计数分组条目,然后获得通过日期
SELECT COUNT(ARTISTID) AS artistcount,
ARTIST AS artistname,
strftime('%Y-%m-%d', playtime) AS day_played
FROM playcount
GROUP BY artistname, day_played
得到这个结果
"93"|"The Skygreen Leopards"|"2010-06-16"
"2" |"Arcade Fire" |"2010-06-15"
"2" |"Dead Kennedys" |"2010-06-15"
"2" |"Wolf People" |"2010-06-15"
"3" |"16 Horsepower" |"2010-06-15"
"3" |"Alela Diane" |"2010-06-15"
"46"|"Motorama" |"2010-06-15"
"1" |"Ariel Pink's Haunted" |"2010-06-14"
我试着再查询该虚拟表,但我总是在ARTISTNAME错误的结果。
SELECT MAX(artistcount), artistname , day_played
FROM
(
SELECT COUNT(ARTISTID) AS artistcount,
ARTIST AS artistname,
strftime('%Y-%m-%d', playtime) AS day_played
FROM playcount
GROUP BY artistname
)
GROUP BY strftime('%Y-%m-%d',day_played)
结果在这个
"93"|"lilium" |"2010-06-16"
"46"|"Wolf People"|"2010-06-15"
"30"|"of Montreal"|"2010-06-14"
但艺术家的名字是假的。 我想通过一天的分组,它只是用过去的艺术家,还是如此。 我测试状内的东西JOIN或GROUP BY ... HAVING在试错,我读的类似问题的例子,但总是迷失在COLUMNNAMES和东西 (我有点烧坏了)
我希望有人能给我一个提示。感谢中号
用艺术家名称再次分组会导致我发布的第一个表格输出。也许我需要第三个选择和“加盟”两种结果^^。 – Marcus 2010-06-16 19:30:32
与MySQL类似,SQLite拥有关于GROUP BY子句的这个“特性”,您不必遵循SQL标准并可以省略列...... – 2010-06-16 19:31:04
这是一个可怕的“特性”,因为它导致了类似的东西。无论如何,将它添加到GROUP BY应该清理问题。 – SqlRyan 2010-06-16 20:31:22