我有一个4200万条记录表,在以下范围内:
| id | date | sid |
+----+------------+-----+
| 01 | 2016-07-09 | 487 |
| 02 | 2016-07-09 | 487 |
| 03 | 2016-07-09 | 487 |
| 04 | 2016-07-09 | 487 |
| 05 | 2016-07-09 | 487 |
| 06 | 2016-07-09 | 753 |
| 07 | 2017-07-01 | 987 |
| 08 | 2017-07-01 | 432 |
| 09 | 2017-07-01 | 432 |
| 10 | 2017-01-13 | 753 |
| 11 | 2017-01-13 | 863 |
| 12 | 2015-01-22 | 255 |
| 13 | 2015-05-22 | 255 |
| 14 | 2015-05-22 | 100 |
| 15 | 2016-07-09 | 487 |
| 16 | 2016-07-09 | 487 |
| 17 | 2016-07-09 | 487 |
| 18 | 2016-07-09 | 487 |
| 19 | 2017-07-01 | 987 |
| 20 | 2017-07-01 | 487 |
| 21 | 2017-01-13 | 753 |
| 22 | 2017-01-13 | 863 |
| 23 | 2015-05-22 | 255 |
| 24 | 2015-05-22 | 100 |
...
我需要查询此表并获取按以下分组的记录:
用于计算目的。
换句话说,查询需要返回:
| id | date | sid |
+----+------------+-----+
| 01 | 2016-07-09 | 487 |
| 06 | 2016-07-09 | 753 |
| 07 | 2017-07-01 | 987 |
| 08 | 2017-07-01 | 432 |
| 10 | 2017-01-13 | 753 |
| 11 | 2017-01-13 | 863 |
| 12 | 2015-01-22 | 255 |
| 13 | 2015-05-22 | 255 |
| 14 | 2015-05-22 | 100 |
| 15 | 2016-07-09 | 487 |
| 19 | 2017-07-01 | 987 |
| 20 | 2017-07-01 | 487 |
| 21 | 2017-01-13 | 753 |
| 22 | 2017-01-13 | 863 |
| 23 | 2015-05-22 | 255 |
| 24 | 2015-05-22 | 100 |
...
我的一个难点就是:
SELECT * FROM `table` WHERE date(`date`) >= date('2015-01-01') and date(`date`) <= date('2017-07-20') group by CASE WHEN COUNT(`sid` = `sid`) > 0 THEN `sid` END
#1111 - 无效使用群组功能
有什么想法吗?
答案 0 :(得分:1)
看起来你只想要function showCode() {
// Generate Python code and display it.
var code = Blockly.Python.workspaceToCode(workspace);
alert(code);
}
:
MIN(id)
附加说明:
SELECT MIN(id), DATE, sid
FROM table
GROUP BY DATE, sid
条款可以简化为WHERE
Date BETWEEN '2015-01-01' AND '2017-07-20'
?这不是一个很棒的专栏名称。它是一个关键字,使Date
和其他日期函数的使用真的令人困惑。