A message from our CEO about the future of Stack Overflow and Stack Exchange. Read now.
2 added 21 characters in body
source | link

Based on your sample, I believe you only need a GROUP BY ID with an HAVING clause on MIN([interestingData]) > 300.

Query:

SELECT ID
    , interestingData = MIN([interestingData])
    , timestamp = MIN([timestamp])
    , count = COUNT([ID])
FROM Table1
GROUP BY ID
HAVING MIN([interestingData]) > 300;

SQL Fiddle with sample data and query.

Output:

ID interestingData timestamp count 1 350 2016-01-23 17:01:00 3

ID  | interestingData   | timestamp             | count
1   | 350               | 2016-01-23 17:01:00   | 3

Based on your sample, I believe you only need a GROUP BY ID with an HAVING clause on MIN([interestingData]) > 300.

Query:

SELECT ID
    , interestingData = MIN([interestingData])
    , timestamp = MIN([timestamp])
    , count = COUNT([ID])
FROM Table1
GROUP BY ID
HAVING MIN([interestingData]) > 300;

SQL Fiddle with sample data and query.

Output:

ID interestingData timestamp count 1 350 2016-01-23 17:01:00 3

Based on your sample, I believe you only need a GROUP BY ID with an HAVING clause on MIN([interestingData]) > 300.

Query:

SELECT ID
    , interestingData = MIN([interestingData])
    , timestamp = MIN([timestamp])
    , count = COUNT([ID])
FROM Table1
GROUP BY ID
HAVING MIN([interestingData]) > 300;

SQL Fiddle with sample data and query.

Output:

ID  | interestingData   | timestamp             | count
1   | 350               | 2016-01-23 17:01:00   | 3
1
source | link

Based on your sample, I believe you only need a GROUP BY ID with an HAVING clause on MIN([interestingData]) > 300.

Query:

SELECT ID
    , interestingData = MIN([interestingData])
    , timestamp = MIN([timestamp])
    , count = COUNT([ID])
FROM Table1
GROUP BY ID
HAVING MIN([interestingData]) > 300;

SQL Fiddle with sample data and query.

Output:

ID interestingData timestamp count 1 350 2016-01-23 17:01:00 3