我需要一個解決方案來對進入時間進行分組,并在該時間間隔內顯示相應的時間間隔和用戶/記錄的計數,例如
時間間隔計數
07:00 AM-07:30 24
12:30 PM-13:00 26
我們如何根據 Java 或 SQL 中的間隔對時間進行分組
我嘗試使用流在 sql 中分組和 LocalTime 分組但我無法根據時間間隔進行隔離
時間間隔計數
07:00:34 12
12:30:23 14
07:23:53 12
12:46:21 12
我只能使用 sql/java 獲取上述格式的資料(兩種方式都試過)
uj5u.com熱心網友回復:
以下是經典(演算法)方法的代碼片段和第二個使用 java 流 api 的代碼片段:
// algorithmic approach
LocalDateTime[] times = Array.randomLocalDateTimes(5);
Array.print(times);
Map<Integer, Integer> counts = new HashMap<>();
for (LocalDateTime time : times) {
int hour = time.get(ChronoField.HOUR_OF_DAY);
int count = counts.getOrDefault(hour, 0);
counts.put(hour, count 1);
}
System.out.println(counts);
// java streams aproach
Map<Integer, Integer> counts2 = Arrays.stream(times)
.collect(Collectors.toMap(time -> time.get(ChronoField.HOUR_OF_DAY), hour -> 1, Integer::sum));
System.out.println(counts2);
// java streams for 30 minutes
Map<String, Integer> counts3 = Arrays.stream(times)
.collect(Collectors.toMap(time -> time.get(ChronoField.HOUR_OF_DAY) ":" (time.get(ChronoField.MINUTE_OF_HOUR) < 30 ? "00" : "30"),
interval -> 1,
Integer::sum));
System.out.println(counts3);
輸出:
2022-10-25T18:06:14.245215, 2022-10-25T22:15:14.246607, 2022-10-25T19:29:14.246624, 2022-10-25T18:08:14.246635, 2022-10-25T10:21:14.246645
{18=2, 19=1, 22=1, 10=1}
{18=2, 19=1, 22=1, 10=1}
{10:00=1, 22:00=1, 19:00=1, 18:00=2}
uj5u.com熱心網友回復:
假設您有不同的時間(無論資料型別如何)并且需要每天 24 小時聚合。這只是意味著要托管 24 個存盤桶。
初始化一個包含 24 個整數的陣列以包含所有零。你時代的回圈。對于他們每個人,只需洗掉分鐘,這樣您就可以知道一天中的時間。在陣列中找到相應的 int 并增加值。
最后,只需列印您的陣列,您就會看到一天中每個小時有多少次。
現在,當您想要有 30 分鐘的間隔時,只需將存盤桶的數量增加到 48 個,而不是減少分鐘,而是決定它是在一小時的前半小時還是后半小時。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521363.html
上一篇:比較兩個字典之間串列中的日期
