我的表中有一个time_part列,其时间格式为13:24。我想按时间分组每10分钟一次。如何将时间分组10分钟。
以下是查询:
time_part tran_time recon_date data
10:14 101425 13/12/2015 a
22:29 222939 13/12/2015 b
22:23 222342 13/12/2015 x
00:46 004615 13/12/2015 d
16:22 162259 13/12/2015 e
12:13 121344 13/12/2015 f
12:14 121410 13/12/2015 g
12:10 121008 13/12/2015 b
21:17 211732 13/12/2015 f
20:25 202511 13/12/2015 r
这是我的表格,tran_time ='hhmmss':
trantime count(*)
000101 5
001101 4
002101 13
.
.
.
230101 5
231101 23
示例输出应该是那样的
ListName
答案 0 :(得分:1)
在派生表中提取小时加上10分钟的部分。然后在外表中执行GROUP BY
:
select 10_min_part, count(*)
from
(
SELECT substr(tran_time, 1, 3) as 10_min_part
from tablename
) dt
group by 10_min_part
在SELECT列表中,您可以将001
连结到10_min_part
。 (现在我无法记住Oracle是如何做到的......)
答案 1 :(得分:0)
首先,将时间部分分别存储为字符串是一种糟糕的设计。
其次, DATE 始终包含日期和时间元素。您需要做的就是使用 TO_CHAR 和所需的格式模型,在需要时从日期中提取时间部分。
在您所说的评论time_part's data type is char , recon_date's data type is date中,recon_date
表示SUBSTR
包含日期和时间元素。因此,您不需要SELECT TO_CHAR(recon_date, 'mi'), COUNT(*)
FROM your_table
GROUP BY TO_CHAR(recon_date, 'mi');
,只需在日期列中使用 TO_CHAR 。
cv::Mat input = cv::imread("../inputData/rectangles.png");
cv::Mat gray;
cv::cvtColor(input,gray,CV_BGR2GRAY);
// since your image has compression artifacts, we have to threshold the image
int threshold = 200;
cv::Mat mask = gray > threshold;
cv::imshow("mask", mask);
// extract contours
std::vector<std::vector<cv::Point> > contours;
cv::findContours(mask, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
for(int i=0; i<contours.size(); ++i)
{
// fit bounding rectangle around contour
cv::RotatedRect rotatedRect = cv::minAreaRect(contours[i]);
// read points and angle
cv::Point2f rect_points[4];
rotatedRect.points( rect_points );
float angle = rotatedRect.angle; // angle
// read center of rotated rect
cv::Point2f center = rotatedRect.center; // center
// draw rotated rect
for(unsigned int j=0; j<4; ++j)
cv::line(input, rect_points[j], rect_points[(j+1)%4], cv::Scalar(0,255,0));
// draw center and print text
std::stringstream ss; ss << angle; // convert float to string
cv::circle(input, center, 5, cv::Scalar(0,255,0)); // draw center
cv::putText(input, ss.str(), center + cv::Point2f(-25,25), cv::FONT_HERSHEY_COMPLEX_SMALL, 1, cv::Scalar(255,0,255)); // print angle
}