Add count_time aggregation usage doc (#73)

diff --git a/src/UserGuide/Master/stage/Operators-Functions/Aggregation.md b/src/UserGuide/Master/stage/Operators-Functions/Aggregation.md
index 332e2cd..201fa0b 100644
--- a/src/UserGuide/Master/stage/Operators-Functions/Aggregation.md
+++ b/src/UserGuide/Master/stage/Operators-Functions/Aggregation.md
@@ -27,21 +27,23 @@
 
 The aggregate functions supported by IoTDB are as follows:
 
-| Function Name | Description                                                  | Allowed Input Series Data Types | Required Attributes                                          | Output Series Data Type             |
-| ------------- | ------------------------------------------------------------ | ------------------------------- | ------------------------------------------------------------ | ----------------------------------- |
-| SUM           | Summation.                                                   | INT32 INT64 FLOAT DOUBLE        | /                                                            | DOUBLE                              |
-| COUNT         | Counts the number of data points.                            | All data types                  | /                                                            | INT                                 |
-| AVG           | Average.                                                     | INT32 INT64 FLOAT DOUBLE        | /                                                            | DOUBLE                              |
-| EXTREME       | Finds the value with the largest absolute value. Returns a positive value if the maximum absolute value of positive and negative values is equal. | INT32 INT64 FLOAT DOUBLE        | /                                                            | Consistent with the input data type |
-| MAX_VALUE     | Find the maximum value.                                      | INT32 INT64 FLOAT DOUBLE        | /                                                            | Consistent with the input data type |
-| MIN_VALUE     | Find the minimum value.                                      | INT32 INT64 FLOAT DOUBLE        | /                                                            | Consistent with the input data type |
-| FIRST_VALUE   | Find the value with the smallest timestamp.                  | All data types                  | /                                                            | Consistent with input data type     |
-| LAST_VALUE    | Find the value with the largest timestamp.                   | All data types                  | /                                                            | Consistent with input data type     |
-| MAX_TIME      | Find the maximum timestamp.                                  | All data Types                  | /                                                            | Timestamp                           |
-| MIN_TIME      | Find the minimum timestamp.                                  | All data Types                  | /                                                            | Timestamp                           |
-| COUNT_IF      | Find the number of data points that continuously meet a given condition and the number of data points that meet the condition (represented by keep) meet the specified threshold. | BOOLEAN                         | `[keep >=/>/=/!=/</<=]threshold`:The specified threshold or threshold condition, it is equivalent to `keep >= threshold` if `threshold` is used alone, type of `threshold` is `INT64` `ignoreNull`:Optional, default value is `true`;If the value is `true`, null values are ignored, it means that if there is a null value in the middle, the value is ignored without interrupting the continuity. If the value is `true`, null values are not ignored, it means that if there are null values in the middle, continuity will be broken | INT64                               |
-| TIME_DURATION | Find the difference between the timestamp of the largest non-null value and the timestamp of the smallest non-null value in a column | All data Types                  | /                                                            | INT64                               |
-| MODE          | Find the mode. Note:  1.Having too many different values in the input series risks a memory exception;  2.If all the elements have the same number of occurrences, that is no Mode, return the value with earliest time;  3.If there are many Modes, return the Mode with earliest time. | All data Types                  | /                                                            | Consistent with the input data type |
+| Function Name | Description                                                  | Allowed Input Series Data Types                     | Required Attributes                                          | Output Series Data Type             |
+| ------------- | ------------------------------------------------------------ |-----------------------------------------------------| ------------------------------------------------------------ | ----------------------------------- |
+| SUM           | Summation.                                                   | INT32 INT64 FLOAT DOUBLE                            | /                                                            | DOUBLE                              |
+| COUNT         | Counts the number of data points.                            | All data types                                      | /                                                            | INT                                 |
+| AVG           | Average.                                                     | INT32 INT64 FLOAT DOUBLE                            | /                                                            | DOUBLE                              |
+| EXTREME       | Finds the value with the largest absolute value. Returns a positive value if the maximum absolute value of positive and negative values is equal. | INT32 INT64 FLOAT DOUBLE                            | /                                                            | Consistent with the input data type |
+| MAX_VALUE     | Find the maximum value.                                      | INT32 INT64 FLOAT DOUBLE                            | /                                                            | Consistent with the input data type |
+| MIN_VALUE     | Find the minimum value.                                      | INT32 INT64 FLOAT DOUBLE                            | /                                                            | Consistent with the input data type |
+| FIRST_VALUE   | Find the value with the smallest timestamp.                  | All data types                                      | /                                                            | Consistent with input data type     |
+| LAST_VALUE    | Find the value with the largest timestamp.                   | All data types                                      | /                                                            | Consistent with input data type     |
+| MAX_TIME      | Find the maximum timestamp.                                  | All data Types                                      | /                                                            | Timestamp                           |
+| MIN_TIME      | Find the minimum timestamp.                                  | All data Types                                      | /                                                            | Timestamp                           |
+| COUNT_IF      | Find the number of data points that continuously meet a given condition and the number of data points that meet the condition (represented by keep) meet the specified threshold. | BOOLEAN                                             | `[keep >=/>/=/!=/</<=]threshold`:The specified threshold or threshold condition, it is equivalent to `keep >= threshold` if `threshold` is used alone, type of `threshold` is `INT64` `ignoreNull`:Optional, default value is `true`;If the value is `true`, null values are ignored, it means that if there is a null value in the middle, the value is ignored without interrupting the continuity. If the value is `true`, null values are not ignored, it means that if there are null values in the middle, continuity will be broken | INT64                               |
+| TIME_DURATION | Find the difference between the timestamp of the largest non-null value and the timestamp of the smallest non-null value in a column | All data Types                                      | /                                                            | INT64                               |
+| MODE          | Find the mode. Note:  1.Having too many different values in the input series risks a memory exception;  2.If all the elements have the same number of occurrences, that is no Mode, return the value with earliest time;  3.If there are many Modes, return the Mode with earliest time. | All data Types                                      | /                                                            | Consistent with the input data type |
+| COUNT_TIME    | The number of timestamps in the query data set. When used with `align by device`, the result is the number of timestamps in the data set per device.                                                                                                                                       | All data Types, the input parameter can only be `*` | /                                                                                                                                                                                                                                                                                                                                                                                                                           | INT64                                        |
+
 
 ## COUNT
 
@@ -179,4 +181,113 @@
 |                  1677570933|
 +----------------------------+
 ```
-> Note: Returns 0 if there is only one data point, or null if the data point is null.
\ No newline at end of file
+> Note: Returns 0 if there is only one data point, or null if the data point is null.
+
+## COUNT_TIME
+### Grammar
+```sql
+    count_time(*)
+```
+### Example
+#### raw data
+```
++----------+-------------+-------------+-------------+-------------+
+|      Time|root.db.d1.s1|root.db.d1.s2|root.db.d2.s1|root.db.d2.s2|
++----------+-------------+-------------+-------------+-------------+
+|         0|            0|         null|         null|            0|
+|         1|         null|            1|            1|         null|
+|         2|         null|            2|            2|         null|
+|         4|            4|         null|         null|            4|
+|         5|            5|            5|            5|            5|
+|         7|         null|            7|            7|         null|
+|         8|            8|            8|            8|            8|
+|         9|         null|            9|         null|         null|
++----------+-------------+-------------+-------------+-------------+
+```
+#### Insert sql
+```sql
+CREATE DATABASE root.db;
+CREATE TIMESERIES root.db.d1.s1 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d1.s2 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d2.s1 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d2.s2 WITH DATATYPE=INT32, ENCODING=PLAIN;
+INSERT INTO root.db.d1(time, s1) VALUES(0, 0), (4,4), (5,5), (8,8);
+INSERT INTO root.db.d1(time, s2) VALUES(1, 1), (2,2), (5,5), (7,7), (8,8), (9,9);
+INSERT INTO root.db.d2(time, s1) VALUES(1, 1), (2,2), (5,5), (7,7), (8,8);
+INSERT INTO root.db.d2(time, s2) VALUES(0, 0), (4,4), (5,5), (8,8);
+```
+
+Query-Example - 1:
+```sql
+select count_time(*) from root.db.**
+```
+
+Result
+```
++-------------+
+|count_time(*)|
++-------------+
+|            8|
++-------------+
+```
+
+Query-Example - 2:
+```sql
+select count_time(*) from root.db.d1, root.db.d2
+```
+
+Result
+```
++-------------+
+|count_time(*)|
++-------------+
+|            8|
++-------------+
+```
+
+Query-Example - 3:
+```sql
+select count_time(*) from root.db.** group by([0, 10), 2ms)
+```
+
+Result
+``` 
++-----------------------------+-------------+
+|                         Time|count_time(*)|
++-----------------------------+-------------+
+|1970-01-01T08:00:00.000+08:00|            2|            
+|1970-01-01T08:00:00.002+08:00|            1|            
+|1970-01-01T08:00:00.004+08:00|            2|            
+|1970-01-01T08:00:00.006+08:00|            1|            
+|1970-01-01T08:00:00.008+08:00|            2|            
++-----------------------------+-------------+
+```
+
+Query-Example - 4:
+```sql
+select count_time(*) from root.db.** group by([0, 10), 2ms) align by device
+```
+
+Result
+```
++-----------------------------+----------+-------------+
+|                         Time|    Device|count_time(*)|
++-----------------------------+----------+-------------+
+|1970-01-01T08:00:00.000+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.002+08:00|root.db.d1|            1|
+|1970-01-01T08:00:00.004+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.006+08:00|root.db.d1|            1|
+|1970-01-01T08:00:00.008+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.000+08:00|root.db.d2|            2|
+|1970-01-01T08:00:00.002+08:00|root.db.d2|            1|
+|1970-01-01T08:00:00.004+08:00|root.db.d2|            2|
+|1970-01-01T08:00:00.006+08:00|root.db.d2|            1|
+|1970-01-01T08:00:00.008+08:00|root.db.d2|            1|
++-----------------------------+----------+-------------+
+```
+
+> Note:
+> 1. The parameter in count_time can only be *.
+> 2. Count_time aggregation cannot be used with other aggregation functions.
+> 3. Count_time aggregation used with having statement is not supported, and count_time aggregation can not appear in the having statement.
+> 4. Count_time does not support use with group by level, group by tag.
\ No newline at end of file
diff --git a/src/UserGuide/V1.2.x/stage/Operators-Functions/Aggregation.md b/src/UserGuide/V1.2.x/stage/Operators-Functions/Aggregation.md
index 332e2cd..385aefc 100644
--- a/src/UserGuide/V1.2.x/stage/Operators-Functions/Aggregation.md
+++ b/src/UserGuide/V1.2.x/stage/Operators-Functions/Aggregation.md
@@ -27,21 +27,23 @@
 
 The aggregate functions supported by IoTDB are as follows:
 
-| Function Name | Description                                                  | Allowed Input Series Data Types | Required Attributes                                          | Output Series Data Type             |
-| ------------- | ------------------------------------------------------------ | ------------------------------- | ------------------------------------------------------------ | ----------------------------------- |
-| SUM           | Summation.                                                   | INT32 INT64 FLOAT DOUBLE        | /                                                            | DOUBLE                              |
-| COUNT         | Counts the number of data points.                            | All data types                  | /                                                            | INT                                 |
-| AVG           | Average.                                                     | INT32 INT64 FLOAT DOUBLE        | /                                                            | DOUBLE                              |
-| EXTREME       | Finds the value with the largest absolute value. Returns a positive value if the maximum absolute value of positive and negative values is equal. | INT32 INT64 FLOAT DOUBLE        | /                                                            | Consistent with the input data type |
-| MAX_VALUE     | Find the maximum value.                                      | INT32 INT64 FLOAT DOUBLE        | /                                                            | Consistent with the input data type |
-| MIN_VALUE     | Find the minimum value.                                      | INT32 INT64 FLOAT DOUBLE        | /                                                            | Consistent with the input data type |
-| FIRST_VALUE   | Find the value with the smallest timestamp.                  | All data types                  | /                                                            | Consistent with input data type     |
-| LAST_VALUE    | Find the value with the largest timestamp.                   | All data types                  | /                                                            | Consistent with input data type     |
-| MAX_TIME      | Find the maximum timestamp.                                  | All data Types                  | /                                                            | Timestamp                           |
-| MIN_TIME      | Find the minimum timestamp.                                  | All data Types                  | /                                                            | Timestamp                           |
-| COUNT_IF      | Find the number of data points that continuously meet a given condition and the number of data points that meet the condition (represented by keep) meet the specified threshold. | BOOLEAN                         | `[keep >=/>/=/!=/</<=]threshold`:The specified threshold or threshold condition, it is equivalent to `keep >= threshold` if `threshold` is used alone, type of `threshold` is `INT64` `ignoreNull`:Optional, default value is `true`;If the value is `true`, null values are ignored, it means that if there is a null value in the middle, the value is ignored without interrupting the continuity. If the value is `true`, null values are not ignored, it means that if there are null values in the middle, continuity will be broken | INT64                               |
-| TIME_DURATION | Find the difference between the timestamp of the largest non-null value and the timestamp of the smallest non-null value in a column | All data Types                  | /                                                            | INT64                               |
-| MODE          | Find the mode. Note:  1.Having too many different values in the input series risks a memory exception;  2.If all the elements have the same number of occurrences, that is no Mode, return the value with earliest time;  3.If there are many Modes, return the Mode with earliest time. | All data Types                  | /                                                            | Consistent with the input data type |
+| Function Name | Description                                                                                                                                                                                                                                                                              | Allowed Input Series Data Types                     | Required Attributes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Output Series Data Type             |
+| ------------- |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------|
+| SUM           | Summation.                                                                                                                                                                                                                                                                               | INT32 INT64 FLOAT DOUBLE                            | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | DOUBLE                              |
+| COUNT         | Counts the number of data points.                                                                                                                                                                                                                                                        | All data types                                      | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | INT                                 |
+| AVG           | Average.                                                                                                                                                                                                                                                                                 | INT32 INT64 FLOAT DOUBLE                            | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | DOUBLE                              |
+| EXTREME       | Finds the value with the largest absolute value. Returns a positive value if the maximum absolute value of positive and negative values is equal.                                                                                                                                        | INT32 INT64 FLOAT DOUBLE                            | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Consistent with the input data type |
+| MAX_VALUE     | Find the maximum value.                                                                                                                                                                                                                                                                  | INT32 INT64 FLOAT DOUBLE                            | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Consistent with the input data type |
+| MIN_VALUE     | Find the minimum value.                                                                                                                                                                                                                                                                  | INT32 INT64 FLOAT DOUBLE                            | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Consistent with the input data type |
+| FIRST_VALUE   | Find the value with the smallest timestamp.                                                                                                                                                                                                                                              | All data types                                      | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Consistent with input data type     |
+| LAST_VALUE    | Find the value with the largest timestamp.                                                                                                                                                                                                                                               | All data types                                      | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Consistent with input data type     |
+| MAX_TIME      | Find the maximum timestamp.                                                                                                                                                                                                                                                              | All data Types                                      | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Timestamp                           |
+| MIN_TIME      | Find the minimum timestamp.                                                                                                                                                                                                                                                              | All data Types                                      | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Timestamp                           |
+| COUNT_IF      | Find the number of data points that continuously meet a given condition and the number of data points that meet the condition (represented by keep) meet the specified threshold.                                                                                                        | BOOLEAN                                             | `[keep >=/>/=/!=/</<=]threshold`:The specified threshold or threshold condition, it is equivalent to `keep >= threshold` if `threshold` is used alone, type of `threshold` is `INT64` `ignoreNull`:Optional, default value is `true`;If the value is `true`, null values are ignored, it means that if there is a null value in the middle, the value is ignored without interrupting the continuity. If the value is `true`, null values are not ignored, it means that if there are null values in the middle, continuity will be broken | INT64                               |
+| TIME_DURATION | Find the difference between the timestamp of the largest non-null value and the timestamp of the smallest non-null value in a column                                                                                                                                                     | All data Types                                      | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | INT64                               |
+| MODE          | Find the mode. Note:  1.Having too many different values in the input series risks a memory exception;  2.If all the elements have the same number of occurrences, that is no Mode, return the value with earliest time;  3.If there are many Modes, return the Mode with earliest time. | All data Types                                      | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Consistent with the input data type |
+| COUNT_TIME    | The number of timestamps in the query data set. When used with `align by device`, the result is the number of timestamps in the data set per device.                                                                                                                                       | All data Types, the input parameter can only be `*` | /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | INT64                               |
+
 
 ## COUNT
 
@@ -179,4 +181,113 @@
 |                  1677570933|
 +----------------------------+
 ```
-> Note: Returns 0 if there is only one data point, or null if the data point is null.
\ No newline at end of file
+> Note: Returns 0 if there is only one data point, or null if the data point is null.
+
+## COUNT_TIME
+### Grammar
+```sql
+    count_time(*)
+```
+### Example 
+#### raw data
+```
++----------+-------------+-------------+-------------+-------------+
+|      Time|root.db.d1.s1|root.db.d1.s2|root.db.d2.s1|root.db.d2.s2|
++----------+-------------+-------------+-------------+-------------+
+|         0|            0|         null|         null|            0|
+|         1|         null|            1|            1|         null|
+|         2|         null|            2|            2|         null|
+|         4|            4|         null|         null|            4|
+|         5|            5|            5|            5|            5|
+|         7|         null|            7|            7|         null|
+|         8|            8|            8|            8|            8|
+|         9|         null|            9|         null|         null|
++----------+-------------+-------------+-------------+-------------+
+```
+#### Insert sql
+```sql
+CREATE DATABASE root.db;
+CREATE TIMESERIES root.db.d1.s1 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d1.s2 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d2.s1 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d2.s2 WITH DATATYPE=INT32, ENCODING=PLAIN;
+INSERT INTO root.db.d1(time, s1) VALUES(0, 0), (4,4), (5,5), (8,8);
+INSERT INTO root.db.d1(time, s2) VALUES(1, 1), (2,2), (5,5), (7,7), (8,8), (9,9);
+INSERT INTO root.db.d2(time, s1) VALUES(1, 1), (2,2), (5,5), (7,7), (8,8);
+INSERT INTO root.db.d2(time, s2) VALUES(0, 0), (4,4), (5,5), (8,8);
+```
+
+Query-Example - 1:
+```sql
+select count_time(*) from root.db.**
+```
+
+Result
+```
++-------------+
+|count_time(*)|
++-------------+
+|            8|
++-------------+
+```
+
+Query-Example - 2:
+```sql
+select count_time(*) from root.db.d1, root.db.d2
+```
+
+Result
+```
++-------------+
+|count_time(*)|
++-------------+
+|            8|
++-------------+
+```
+
+Query-Example - 3:
+```sql
+select count_time(*) from root.db.** group by([0, 10), 2ms)
+```
+
+Result
+``` 
++-----------------------------+-------------+
+|                         Time|count_time(*)|
++-----------------------------+-------------+
+|1970-01-01T08:00:00.000+08:00|            2|            
+|1970-01-01T08:00:00.002+08:00|            1|            
+|1970-01-01T08:00:00.004+08:00|            2|            
+|1970-01-01T08:00:00.006+08:00|            1|            
+|1970-01-01T08:00:00.008+08:00|            2|            
++-----------------------------+-------------+
+```
+
+Query-Example - 4:
+```sql
+select count_time(*) from root.db.** group by([0, 10), 2ms) align by device
+```
+
+Result
+```
++-----------------------------+----------+-------------+
+|                         Time|    Device|count_time(*)|
++-----------------------------+----------+-------------+
+|1970-01-01T08:00:00.000+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.002+08:00|root.db.d1|            1|
+|1970-01-01T08:00:00.004+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.006+08:00|root.db.d1|            1|
+|1970-01-01T08:00:00.008+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.000+08:00|root.db.d2|            2|
+|1970-01-01T08:00:00.002+08:00|root.db.d2|            1|
+|1970-01-01T08:00:00.004+08:00|root.db.d2|            2|
+|1970-01-01T08:00:00.006+08:00|root.db.d2|            1|
+|1970-01-01T08:00:00.008+08:00|root.db.d2|            1|
++-----------------------------+----------+-------------+
+```
+
+> Note:
+> 1. The parameter in count_time can only be *.
+> 2. Count_time aggregation cannot be used with other aggregation functions.
+> 3. Count_time aggregation used with having statement is not supported, and count_time aggregation can not appear in the having statement.
+> 4. Count_time does not support use with group by level, group by tag.
\ No newline at end of file
diff --git a/src/zh/UserGuide/Master/stage/Operators-Functions/Aggregation.md b/src/zh/UserGuide/Master/stage/Operators-Functions/Aggregation.md
index 5c689b6..7d4366e 100644
--- a/src/zh/UserGuide/Master/stage/Operators-Functions/Aggregation.md
+++ b/src/zh/UserGuide/Master/stage/Operators-Functions/Aggregation.md
@@ -40,8 +40,11 @@
 | MAX_TIME      | 求最大时间戳。                                                                                                  | 所有类型                     | 无                                                                                                                                                                                                                          | Timestamp |
 | MIN_TIME      | 求最小时间戳。                                                                                                  | 所有类型                     | 无                                                                                                                                                                                                                          | Timestamp |
 | COUNT_IF      | 求数据点连续满足某一给定条件,且满足条件的数据点个数(用keep表示)满足指定阈值的次数。                                                            | BOOLEAN                  | `[keep >=/>/=/!=/</<=]threshold`:被指定的阈值或阈值条件,若只使用`threshold`则等价于`keep >= threshold`,`threshold`类型为`INT64` <br> `ignoreNull`:可选,默认为`true`;为`true`表示忽略null值,即如果中间出现null值,直接忽略,不会打断连续性;为`false`表示不忽略null值,即如果中间出现null值,会打断连续性 | INT64     |
-| TIME_DURATION | 求某一列最大一个不为NULL的值所在时间戳与最小一个不为NULL的值所在时间戳的时间戳差                                                             | 所有类型                     | 无                                                                                                                                                                                                                          |   INT64        |
-| MODE          | 求众数。注意:<br>1.输入序列的不同值个数过多时会有内存异常风险; <br>2.如果所有元素出现的频次相同,即没有众数,则返回对应时间戳最小的值; <br>3.如果有多个众数,则返回对应时间戳最小的众数。 | 所有类型                     | 无                                                                                                                                                                                                                          | 与输入类型一致     |
+| TIME_DURATION | 求某一列最大一个不为NULL的值所在时间戳与最小一个不为NULL的值所在时间戳的时间戳差                                                             | 所有类型                     | 无                                                                                                                                                                                                                          | INT64     |
+| MODE          | 求众数。注意:<br>1.输入序列的不同值个数过多时会有内存异常风险; <br>2.如果所有元素出现的频次相同,即没有众数,则返回对应时间戳最小的值; <br>3.如果有多个众数,则返回对应时间戳最小的众数。 | 所有类型                     | 无                                                                                                                                                                                                                          | 与输入类型一致   |
+| COUNT_TIME    | 查询结果集的时间戳的数量。与 align by device 搭配使用时,得到的结果是每个设备的结果集的时间戳的数量。                         | 所有类型,输入参数只能为*            |  无        |                                                                                                                                                                                                                               INT64    |
+
+
 ## COUNT_IF
 
 ### 语法
@@ -160,3 +163,113 @@
 +----------------------------+
 ```
 > 注:若数据点只有一个,则返回0,若数据点为null,则返回null。
+
+## COUNT_TIME
+### 语法
+```sql
+    count_time(*)
+```
+### 使用示例
+#### 准备数据
+```
++----------+-------------+-------------+-------------+-------------+
+|      Time|root.db.d1.s1|root.db.d1.s2|root.db.d2.s1|root.db.d2.s2|
++----------+-------------+-------------+-------------+-------------+
+|         0|            0|         null|         null|            0|
+|         1|         null|            1|            1|         null|
+|         2|         null|            2|            2|         null|
+|         4|            4|         null|         null|            4|
+|         5|            5|            5|            5|            5|
+|         7|         null|            7|            7|         null|
+|         8|            8|            8|            8|            8|
+|         9|         null|            9|         null|         null|
++----------+-------------+-------------+-------------+-------------+
+```
+#### 写入语句
+```sql
+CREATE DATABASE root.db;
+CREATE TIMESERIES root.db.d1.s1 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d1.s2 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d2.s1 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d2.s2 WITH DATATYPE=INT32, ENCODING=PLAIN;
+INSERT INTO root.db.d1(time, s1) VALUES(0, 0), (4,4), (5,5), (8,8);
+INSERT INTO root.db.d1(time, s2) VALUES(1, 1), (2,2), (5,5), (7,7), (8,8), (9,9);
+INSERT INTO root.db.d2(time, s1) VALUES(1, 1), (2,2), (5,5), (7,7), (8,8);
+INSERT INTO root.db.d2(time, s2) VALUES(0, 0), (4,4), (5,5), (8,8);
+```
+
+查询示例1:
+```sql
+select count_time(*) from root.db.**
+```
+
+输出
+```
++-------------+
+|count_time(*)|
++-------------+
+|            8|
++-------------+
+```
+
+查询示例2:
+```sql
+select count_time(*) from root.db.d1, root.db.d2
+```
+
+输出
+```
++-------------+
+|count_time(*)|
++-------------+
+|            8|
++-------------+
+```
+
+查询示例3:
+```sql
+select count_time(*) from root.db.** group by([0, 10), 2ms)
+```
+
+输出
+``` 
++-----------------------------+-------------+
+|                         Time|count_time(*)|
++-----------------------------+-------------+
+|1970-01-01T08:00:00.000+08:00|            2|            
+|1970-01-01T08:00:00.002+08:00|            1|            
+|1970-01-01T08:00:00.004+08:00|            2|            
+|1970-01-01T08:00:00.006+08:00|            1|            
+|1970-01-01T08:00:00.008+08:00|            2|            
++-----------------------------+-------------+
+```
+
+查询示例4:
+```sql
+select count_time(*) from root.db.** group by([0, 10), 2ms) align by device
+```
+
+输出
+```
++-----------------------------+----------+-------------+
+|                         Time|    Device|count_time(*)|
++-----------------------------+----------+-------------+
+|1970-01-01T08:00:00.000+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.002+08:00|root.db.d1|            1|
+|1970-01-01T08:00:00.004+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.006+08:00|root.db.d1|            1|
+|1970-01-01T08:00:00.008+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.000+08:00|root.db.d2|            2|
+|1970-01-01T08:00:00.002+08:00|root.db.d2|            1|
+|1970-01-01T08:00:00.004+08:00|root.db.d2|            2|
+|1970-01-01T08:00:00.006+08:00|root.db.d2|            1|
+|1970-01-01T08:00:00.008+08:00|root.db.d2|            1|
++-----------------------------+----------+-------------+
+
+```
+
+> 注:
+> 1. count_time里的表达式只能为*。
+> 2. count_time不能和其他的聚合函数一起使用。
+> 3. having语句里不支持使用count_time, 使用count_time聚合函数时不支持使用having语句。
+> 4. count_time不支持与group by level, group by tag一起使用。
diff --git a/src/zh/UserGuide/V1.2.x/stage/Operators-Functions/Aggregation.md b/src/zh/UserGuide/V1.2.x/stage/Operators-Functions/Aggregation.md
index 5c689b6..dcf3def 100644
--- a/src/zh/UserGuide/V1.2.x/stage/Operators-Functions/Aggregation.md
+++ b/src/zh/UserGuide/V1.2.x/stage/Operators-Functions/Aggregation.md
@@ -42,6 +42,9 @@
 | COUNT_IF      | 求数据点连续满足某一给定条件,且满足条件的数据点个数(用keep表示)满足指定阈值的次数。                                                            | BOOLEAN                  | `[keep >=/>/=/!=/</<=]threshold`:被指定的阈值或阈值条件,若只使用`threshold`则等价于`keep >= threshold`,`threshold`类型为`INT64` <br> `ignoreNull`:可选,默认为`true`;为`true`表示忽略null值,即如果中间出现null值,直接忽略,不会打断连续性;为`false`表示不忽略null值,即如果中间出现null值,会打断连续性 | INT64     |
 | TIME_DURATION | 求某一列最大一个不为NULL的值所在时间戳与最小一个不为NULL的值所在时间戳的时间戳差                                                             | 所有类型                     | 无                                                                                                                                                                                                                          |   INT64        |
 | MODE          | 求众数。注意:<br>1.输入序列的不同值个数过多时会有内存异常风险; <br>2.如果所有元素出现的频次相同,即没有众数,则返回对应时间戳最小的值; <br>3.如果有多个众数,则返回对应时间戳最小的众数。 | 所有类型                     | 无                                                                                                                                                                                                                          | 与输入类型一致     |
+| COUNT_TIME    | 查询结果集的时间戳的数量。与 align by device 搭配使用时,得到的结果是每个设备的结果集的时间戳的数量。                         | 所有类型,输入参数只能为*            |  无        |                                                                                                                                                                                                                               INT64    |
+
+
 ## COUNT_IF
 
 ### 语法
@@ -160,3 +163,113 @@
 +----------------------------+
 ```
 > 注:若数据点只有一个,则返回0,若数据点为null,则返回null。
+
+## COUNT_TIME
+### 语法
+```sql
+    count_time(*)
+```
+### 使用示例
+#### 准备数据
+```
++----------+-------------+-------------+-------------+-------------+
+|      Time|root.db.d1.s1|root.db.d1.s2|root.db.d2.s1|root.db.d2.s2|
++----------+-------------+-------------+-------------+-------------+
+|         0|            0|         null|         null|            0|
+|         1|         null|            1|            1|         null|
+|         2|         null|            2|            2|         null|
+|         4|            4|         null|         null|            4|
+|         5|            5|            5|            5|            5|
+|         7|         null|            7|            7|         null|
+|         8|            8|            8|            8|            8|
+|         9|         null|            9|         null|         null|
++----------+-------------+-------------+-------------+-------------+
+```
+#### 写入语句
+```sql
+CREATE DATABASE root.db;
+CREATE TIMESERIES root.db.d1.s1 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d1.s2 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d2.s1 WITH DATATYPE=INT32, ENCODING=PLAIN;
+CREATE TIMESERIES root.db.d2.s2 WITH DATATYPE=INT32, ENCODING=PLAIN;
+INSERT INTO root.db.d1(time, s1) VALUES(0, 0), (4,4), (5,5), (8,8);
+INSERT INTO root.db.d1(time, s2) VALUES(1, 1), (2,2), (5,5), (7,7), (8,8), (9,9);
+INSERT INTO root.db.d2(time, s1) VALUES(1, 1), (2,2), (5,5), (7,7), (8,8);
+INSERT INTO root.db.d2(time, s2) VALUES(0, 0), (4,4), (5,5), (8,8);
+```
+
+查询示例1:
+```sql
+select count_time(*) from root.db.**
+```
+
+输出
+```
++-------------+
+|count_time(*)|
++-------------+
+|            8|
++-------------+
+```
+
+查询示例2:
+```sql
+select count_time(*) from root.db.d1, root.db.d2
+```
+
+输出
+```
++-------------+
+|count_time(*)|
++-------------+
+|            8|
++-------------+
+```
+
+查询示例3:
+```sql
+select count_time(*) from root.db.** group by([0, 10), 2ms)
+```
+
+输出
+``` 
++-----------------------------+-------------+
+|                         Time|count_time(*)|
++-----------------------------+-------------+
+|1970-01-01T08:00:00.000+08:00|            2|            
+|1970-01-01T08:00:00.002+08:00|            1|            
+|1970-01-01T08:00:00.004+08:00|            2|            
+|1970-01-01T08:00:00.006+08:00|            1|            
+|1970-01-01T08:00:00.008+08:00|            2|            
++-----------------------------+-------------+
+```
+
+查询示例4:
+```sql
+select count_time(*) from root.db.** group by([0, 10), 2ms) align by device
+```
+
+输出
+```
++-----------------------------+----------+-------------+
+|                         Time|    Device|count_time(*)|
++-----------------------------+----------+-------------+
+|1970-01-01T08:00:00.000+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.002+08:00|root.db.d1|            1|
+|1970-01-01T08:00:00.004+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.006+08:00|root.db.d1|            1|
+|1970-01-01T08:00:00.008+08:00|root.db.d1|            2|
+|1970-01-01T08:00:00.000+08:00|root.db.d2|            2|
+|1970-01-01T08:00:00.002+08:00|root.db.d2|            1|
+|1970-01-01T08:00:00.004+08:00|root.db.d2|            2|
+|1970-01-01T08:00:00.006+08:00|root.db.d2|            1|
+|1970-01-01T08:00:00.008+08:00|root.db.d2|            1|
++-----------------------------+----------+-------------+
+
+```
+
+> 注:
+> 1. count_time里的表达式只能为*。
+> 2. count_time不能和其他的聚合函数一起使用。
+> 3. having语句里不支持使用count_time, 使用count_time聚合函数时不支持使用having语句。
+> 4. count_time不支持与group by level, group by tag一起使用。