473,394 Members | 1,852 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes and contribute your articles to a community of 473,394 developers and data experts.

The Partition() Function

ADezii
8,834 Expert 8TB
The inspiration for this Tip was an initial reply by one of our resident Experts to a specific Post. In this Post, the User wanted to know how he could calculate the total number of test results (Satisfactory/Unsatisfactory) for specific age group intervals such as: 20-24, 25-29, etc. The use of the Partition Function was suggested, I followed up with a reply of my own, and it seemed as though some interest was generated in this little know Function. I decided to make this into a Tip, because even though it is a little known and rarely used Function, it is actually very handy when you want to calculate how many times something occurs within a calculated series of ranges or if you want to know if a number occurs within a calculated series of ranges. The syntax for the Partition Function is:
  1. Partition(number, start, stop, interval)
    1. number - whole number to be evaluated against the ranges.
    2. start - whole number that is the start of the overall range of number.
    3. stop - whole number that is the end of the overall range of numbers.
    4. interval - difference between range elements.
  2. The best method of explaining this Function is to show some test data, then apply the Function against the data with specific Arguments. The sample data, SQL Statement, and subsequent output are listed below:
    Expand|Select|Wrap|Line Numbers
    1. [Age]      [Testrslt] (Fields in tblTest)
    2.  
    3.  73        Satisfactory
    4.  19        Satisfactory
    5.  19        Unsatisfactory
    6.  20        Satisfactory
    7.  24        Unsatisfactory
    8.  21        Satisfactory
    9.  16        Satisfactory
    10.  45        Unsatisfactory
    11.  50        Satisfactory
    12.  55        Unsatisfactory
    13.  75        Satisfactory
    14.  80        Unsatisfactory
    15.  62        Satisfactory
    16.  64        Unsatisfactory
    17.  46        Unsatisfactory
    18.  47        Unsatisfactory
    19.  49        Unsatisfactory
    20.  48        Unsatisfactory
    21.  56        Unsatisfactory
    22.  58        Satisfactory
    23.  72        Satisfactory
    24.  67        Unsatisfactory
    25.  15        Satisfactory
    26.  17        Satisfactory
    27.  63        Unsatisfactory
    28.  66        Unsatisfactory
    29.  61        Unsatisfactory
    30.  33        Satisfactory
    31.  50        Satisfactory
    32.  51        Satisfactory
    33.  54        Satisfactory
    34.  32        Unsatisfactory
    Expand|Select|Wrap|Line Numbers
    1. SELECT DISTINCTROW [Testrslt], Partition([Age],0,100,5) AS Age_Range, Count([Age]) AS Range_Count
    2. FROM tblTest
    3. GROUP BY [Testrslt], Partition([Age],0,100,5);
    Expand|Select|Wrap|Line Numbers
    1. [Testrslt]       [Age_Range]  [Range_Count]
    2. Satisfactory     15: 19             4
    3. Satisfactory     20: 24             2
    4. Satisfactory     30: 34             1
    5. Satisfactory     50: 54             4
    6. Satisfactory     55: 59             1
    7. Satisfactory     60: 64             1
    8. Satisfactory     70: 74             2
    9. Satisfactory     75: 79             1
    10. Unsatisfactory     15: 19           1
    11. Unsatisfactory     20: 24           1
    12. Unsatisfactory     30: 34           1
    13. Unsatisfactory     45: 49           5
    14. Unsatisfactory     55: 59           2
    15. Unsatisfactory     60: 64           3
    16. Unsatisfactory     65: 69           2
    17. Unsatisfactory     80: 84           1
Sep 16 '07 #1
8 17273
nico5038
3,080 Expert 2GB
Hi ADezii, thanks for teaching me a new function :)

Personally I prefer however to use the "table approach" as this will allow me to have the ranges specified by the user, thus placing the responsibility in his (her) hands. You know how often users can change their mind :-)

Nic;o).
Jan 19 '10 #2
ADezii
8,834 Expert 8TB
Point well taken, Nico.
Jan 19 '10 #3
MMcCarthy
14,534 Expert Mod 8TB
Although I agree with Nico I appreciate learning a new function. Never know when it might come in useful. :D
Jan 19 '10 #4
Here's a frequency distribution approach that uses a table with the group definitions: Frequency Distributions
May 9 '10 #5
ADezii
8,834 Expert 8TB
Thanks for Posting this informational Link.
May 9 '10 #6
jimatqsi
1,271 Expert 1GB
Does this work in Access? Isn't DistinctRow SQL-only?
Jun 12 '10 #7
ADezii
8,834 Expert 8TB
The Partition() Function will work in Access.
Jun 12 '10 #8
MMcCarthy
14,534 Expert Mod 8TB
Not sure if DISTINCTROW does anything Jim but it doesn't throw an error.
Jun 12 '10 #9

Sign in to post your reply or Sign up for a free account.

Similar topics

41
by: Xah Lee | last post by:
here's another interesting algorithmic exercise, again from part of a larger program in the previous series. Here's the original Perl documentation: =pod merge($pairings) takes a list of...
10
by: Xah Lee | last post by:
another functional exercise with lists. Here's the perl documentation. I'll post a perl and the translated python version in 48 hours. =pod parti(aList, equalFunc) given a list aList of...
1
by: Mark Dengler | last post by:
I am trying to write a C# backend program that will handle the database maintenance that I would otherwise have to do via Microsoft's Analysis Services front end GUI Wizards. Currently I am having...
5
by: sameer_deshpande | last post by:
Hi, I need to create a partition table but the column on which I need to create a partition may not have any logical ranges. So while creating or defining partition function I can not use any...
0
by: acosgaya | last post by:
hi, I am working in this problem, where I have a set of N d-dimensional points, e.g. (4,5,6,8) (2,0,4,6), are 4-d points, which I have stored in a vector of vectors. I am trying to partition...
4
by: eavery | last post by:
I can't seem to find a way to do the following: create table part_table ( col1 int, col2 datetime ) on psX (datename(week,col2)) I want to partition based on the week number of a date field....
2
by: eavery | last post by:
Does anyone know of any documentation on the performance of partition merge/split? Does the merge or split of a partition cause any locking on the partitioned table? If you were merging or...
0
by: Vinod Sadanandan | last post by:
Table Partition Performance analysis ============================================ Collection of Statistics for Cost-Based Optimization/DBMS_STATS vs. ANALYZE The cost-based approach relies on...
0
debasisdas
by: debasisdas | last post by:
SAMPLE CODE TO CREATE SUB PARTITIONS ======================================= RANGE-HASH-9i ------------------------- CREATE TABLE SUBPART ( ID NUMBER(10) PRIMARY KEY, NAME VARCHAR2(20) )
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.