2010-11-22 6 views
0

Ich möchte das Verhältnis bestimmen, wie oft ein Costcentre erscheint in diesem Vermögenswertjava: bestimmen Verhältnis, von mehreren Eingängen und doppelte Eingabe

könnte einfacher sein, als

Eingabedatei zu zeigen, erklären

asset_id|employee_id|costcentre_id 

1|123|2 

1|342|2 

1|122|3 

2|231|4 

2|232|3 

die Rückkehr sollte

asset_id|employee_id|ratio 

1 | 2 | 1        //because more than 50% of 1 was allocated to 2 

2 | 4 | 0.5        //because not more than 50% ... 

2 | 3 | 0.5        //because not more than 50% ... 

Natürlich sieht der Eingang viel schlechter aus als das, stell dir vor. . .

5|503|18 

5|742|18 

5|861|18 

5|408|18 

5|330|18 

5|440|18 

5|102|18 

23|418|5 

26|723|70 

26|466|89 

26|376|85 

26|839|89 

28|811|189 

28|1224|244 

28|302|72 

28|348|244 

29|229|47 

31|655|80 

44|250|10 

44|729|81 

44|867|10 

44|960|81 

44|973|81 //just a small piece of the input file 

Es muss die Höhe der Zeit bestimmen, die ASSET_ID gibt es dann wird es Werte erhalten für jeden und zu bestimmen, ob es mehr als 50% auf Costcentre zugeteilt waren, geben sie ein Verhältnis von 1 und Ausgang Ergebnisse dieses einen Eintrags.

, wenn sie nicht über mehr als 50% der Costcenter IDs, die die gleichen sind, sollten sie das Verhältnis aufgeteilt, wie der Formel-Verhältnis = (Höhe der Zeit seiner dort/Zählnummer anderen Zeiten)

Antwort

0
  1. verarbeiten Sie Ihre Eingabe und Speicherung für ASSET_ID jede Kombination von costcentre_id in einer Liste
  2. Sortieren Sie die Liste für jede ASSET_ID und wenn der mittlere Wert der ersten verwenden Sie dann Liste ein Verhältnis von 1
  3. gleich Ansonsten jede costcentre_id und ASSET_ID und die Gesamt Vorkommen dieser Kombination über die gesamten Vorkommen dieser Asset-ID
+0

in Bezug auf # 2 was passiert, wenn es nur 4 Einträge gibt, das ist die mittlere? und # 3 Ich denke, das ist die richtige Logik, die Sie dort bekommen, aber wie man es in Java programmiert, würde jede Hilfe geschätzt werden – Jaques

+0

Da Sie mehr als 50% wollen, wenn die Größe der Liste eine gerade Zahl ist dann die "Mitte "Einer für dich wäre Größe/2 + 1. – jzd

Verwandte Themen