Substitute to GROUP BY function


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Substitute to GROUP BY function
# 1  
Old 01-02-2006
Substitute to GROUP BY function

Hi All,
I really need a help on this thing. Most of us are aware about the group by function in Oracle. Do we have a substitute ( not necessarily a single line command) to it in Unix?
Let me put it this way.
I have a file whose content is like
file1-:

ID1,ID2,ID3,ID4,ID5
1,2,3,123,5
1,5,4,154,2
1,2,3,123,4
2,3,5,235,3
1,5,4,154,1
2,3,5,235,2
3,2,5,325,5
2,3,5,235,6

The first line is not the content of the file. Rather I put that to identify the the fields. ID3 is nothing but "ID1||ID2||ID3".
Now we need to sort the file1 based on ID4 and then sum up the ID4 values for the same ID3. This sum-ed up value will be ID5. And ID6 will be the number of records involved in the group.
My final output should be like
1,2,3,123,9,2
1,5,4,154,3,2
2,3,5,235,11,3
3,2,5,325,5,1
Is not this what the GROUP BY function performs in Oracle? If my words are confusing then sorry for that. But the i/p and o/p files are self explanatory. Ain't they?
Thanks in advance for any help.

Many regards,
Rinku..
# 2  
Old 01-02-2006
Here's a quick nawk solution; I'm sure that you will want to muck with it some (just demonstrating that it can be done without too much difficulty):
Code:
nawk -F\, '{
    keys[$4] += 1
    sums[$4] += $5
    other_stuff[$4] = $1 "," $2 "," $3
}
END {
    for (j in keys) 
        print other_stuff[j] "," i "," sums[j] "," keys[j]
}' yourdatafile | sort -t\, -k4

1,2,3,123,9,2
1,5,4,154,3,2
2,3,5,235,11,3
3,2,5,325,5,1

# 3  
Old 01-03-2006
MySQL Here's a quick nawk solution

Thanks tmaricle,
Your solution really works. I was new to the Associative array concept in awk. This different version of for loop really hold a good power to deal with such sort of problems. I am sure this solution must give a good deal of information to the entire forum.
Thanking you once again...

Kind regards,
Rink...
# 4  
Old 01-03-2006
Quote:
Your solution really works. I was new to the Associative array concept in awk.
Smilie I wish I could take more credit; these are almost my very words a year ago when vgersh99 enlightened me in this grouping technique (see this post).
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Programming

Sql ORA-00937: not a single-group group function

I'm trying to return only one row with the highest value for PCT_MAX_USED. Any suggestions? When I add this code, I get the ORA-00937 error. trunc(max(decode( kbytes_max, 0, 0, (kbytes_alloc/kbytes_max)*100))) pct_max_used This is the original and returns all rows. select (select... (3 Replies)
Discussion started by: progkcp
3 Replies

2. Shell Programming and Scripting

Awk-using group function

Hi, I have file with below format and sample data - File is pipe delimited Col1|col2|Account|Bal1|Bal2 1|2|1|10|5 1|2|2|10|2 1|3|3|10|3 I want output as SUM|1|2|2|20|7 SUM|1|3|1|10|3 Can anyone give me awk command (4 Replies)
Discussion started by: sanranad
4 Replies

3. Shell Programming and Scripting

need a one liner to grep a group info from /etc/group and use that result to search passwd file

/etc/group tiadm::345:mk789,po312,jo343,ju454,ko453,yx879,iy345,hn453 bin::2:root,daemon sys::3:root,bin,adm adm::4:root,daemon uucp::5:root /etc/passwd mk789:x:234:1::/export/home/dummy:/bin/sh po312:x:234:1::/export/home/dummy:/bin/sh ju454:x:234:1::/export/home/dummy:/bin/sh... (6 Replies)
Discussion started by: chidori
6 Replies

4. AIX

Adding a Volume Group to an HACMP Resource Group?

Hi, I have a 2 node Cluster. Which is working in active/passive mode (i.e Node#1 is running and when it goes down the Node#2 takes over) Now there's this requirement that we need a mount point say /test that should be available in active node #1 and when node #1 goes down and node#2 takes... (6 Replies)
Discussion started by: aixromeo
6 Replies

5. Shell Programming and Scripting

Sort the file contents in each group....print the group title as well

I've this file and need to sort the data in each group File would look like this ... cat file1.txt Reason : ABC 12345-0023 32123-5400 32442-5333 Reason : DEF 42523-3453 23345-3311 Reason : HIJ 454553-0001 I would like to sort each group on the last 4 fileds and print them... (11 Replies)
Discussion started by: prash184u
11 Replies

6. Shell Programming and Scripting

Merge group numbers and add a column containing group names

Hi All I do have a file like this with 6 columns. Groups of data merge together and the group number is indicated above each group. 1 1 12 26 289 3.2e-027 GCGTATGGCGGC 2 12 26 215 6.7e+006 TTCCACCTTTTG 3 9 26 175 ... (1 Reply)
Discussion started by: Lucky Ali
1 Replies

7. Shell Programming and Scripting

Merge group numbers and add a column containing group names

I have a file in the following format. Groups of data merge together and the group number is indicated above each group. 1 adrf dfgr dfg 2 dfgr dfgr 3 dfef dfr fd 4 fgrt fgr fgg 5 fgrt fgr (3 Replies)
Discussion started by: Lucky Ali
3 Replies

8. Shell Programming and Scripting

sed substitute / for \ : error "Function can not be parsed"

Hello all, I have a weird issue when trying to substitute the slashes into backslashes. If I execute this on the command-line (bash / ksh) I get the path correctly translated with backslashes instead of slashes. > echo $PWD | sed 's/\//\\/g' However, when I put this in my script to... (3 Replies)
Discussion started by: candyflip2000
3 Replies

9. Solaris

entry in /etc/group too long - problem using sudo with %group

hi folks, I've been googling for quite some time, but still can't find anything near it...my problem is the following: for useradministration in our company we are using ssh/sudo, now whenever I try to add users (we have quite a number of users) with useradd -G groupname for secondary group I... (4 Replies)
Discussion started by: poli
4 Replies
Login or Register to Ask a Question