我有一张桌子叫filestatistics:
id file userid datetime
1 p1 99 2017-04-15 09:05:10
2 exp1 99 2017-04-15 09:25:17
3 p2 99 2017-04-15 09:45:46
4 exp2 99 2017-04-15 09:55:07
Run Code Online (Sandbox Code Playgroud)
我想根据他们的文件名对每个用户进行分组并获取他们的总条目,但不包括“ex”字符串。
我的查询是:
SELECT file FROM filestatistics WHERE userid = 99 GROUP BY file;
Run Code Online (Sandbox Code Playgroud)
我上面的查询导致 4 个条目是错误的。
对每个用户的文件进行分组的正确查询是什么?
期望的输出是
2 files for userid = 99
//since p1 and exp1 are grouped as 1
//since p2 and exp2 are grouped as 1
Run Code Online (Sandbox Code Playgroud)
您可以使用以下解决方案REPLACE来获取文件:
SELECT userid, REPLACE(file, 'ex', '') AS file, COUNT(id) AS cnt_files
FROM filestatistics
GROUP BY REPLACE(file, 'ex', ''), userid
Run Code Online (Sandbox Code Playgroud)
要获取COUNT每个用户的文件,您可以使用以下命令:
SELECT COUNT(DISTINCT REPLACE(file, 'ex', '')) AS cnt_files
FROM filestatistics
GROUP BY userid
Run Code Online (Sandbox Code Playgroud)