• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • How to Count with SQL

    October 26, 2005 Ted Holt

    SQL can count two ways–vertically and horizontally. Anybody who uses SQL for data retrieval should know both methods. If you use SQL and don’t know how to count both ways, you’re in luck, because I’m about to explain both techniques.

    Let’s consider vertical counting first because it’s the easier method. To count vertically, use the COUNT function and the GROUP BY clause. To illustrate, I’ll count records in my favorite database file QIWS/QCUSTCDT. You can find this file on your system, but to save you the trouble, here’s the data we’ll be using.

    LSTNAM    INIT  STATE  CHGCOD
    Henning   G K    TX       3  
    Jones     B D    NY       1  
    Vine      S S    VT       1  
    Johnson   J A    GA       2  
    Tyron     W E    NY       1  
    Stevens   K L    CO       1  
    Alison    J S    MN       3  
    Doe       J W    CA       2  
    Thomas    A N    WY       2  
    Williams  E D    TX       1  
    Lee       F L    NY       2  
    Abraham   M T    MN       3
    

    Here’s the SQL command to count the number of customers in each state.

    select state, count(*) 
      from qiws/qcustcdt   
     group by state        
     order by state
    

    The * in the COUNT function stands for “all rows”. The GROUP tells which field(s) to summarize by. Here’s the result set.

    STATE  COUNT(*) 
     CA           1 
     CO           1 
     GA           1 
     MN           2 
     NY           3 
     TX           2 
     VT           1 
     WY           1
    

    Isn’t that easy? I told you that counting vertically is easy. The reason I call it counting vertically is because the results are displayed vertically.

    You can summarize by more than one field. Let’s summarize by state within charge code.

    select chgcod, state, count(*)
      from qiws/qcustcdt          
     group by chgcod, state       
     order by chgcod, state
    

    Here’s the result of the query.

    CHGCOD  STATE    COUNT ( * )
       1     CO                1
       1     NY                2
       1     TX                1
       1     VT                1
       2     CA                1
       2     GA                1
       2     NY                1
       2     WY                1
       3     MN                2
       3     TX                1
    

    The result set is accurate, but isn’t it ugly? If you want to make it look more civilized, humane, or otherwise respectable, you can count horizontally. To count horizontally, you don’t use the COUNT function. Instead use the SUM function and the CASE expression.

    CASE has two forms.

    CASE expression
       WHEN value THEN value
       ELSE value
    END
    
    CASE
       WHEN expression THEN value 
       ELSE value 
    END
    

    You may have more than one WHEN-THEN combo in either form, but for counting, one WHEN-THEN is sufficient. You may use either form you like.


    It’s time for an example. Here are the CASE expressions you can use to count customers from New York.

    case state when 'NY' then 1 else 0 end
    
    case when state='NY' then 1 else 0 end
    

    When the system reads a record, it determines whether or not the state field has a value of NY or not. If so, it returns a one. If not, it returns a zero. To add up the ones and zeros, use the SUM function.

    sum(case state when 'NY' then 1 else 0 end)
    

    Let’s look at a complete query. This SQL command counts the number of New York customers, Minnesota customers, and other customers for each charge code.

    select chgcod, 
        sum(case state when 'NY' then 1 else 0 end) as New_York, 
        sum(case state when 'MN' then 1 else 0 end) as Minnesota,
        sum(case when state not in ('NY','MN') 
                    then 1 else 0 end) as Other 
    from qiws/qcustcdt 
    group by chgcod    
    order by chgcod     
    

    Here’s the result set.

    CHGCOD NEW_YORK   MINNESOTA    OTHER     
       1          2           0        3     
       2          1           0        3     
       3          0           2        1     
    

    There you have it. Horizontal counting is easy, too.

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags:

    Sponsored by
    WorksRight Software

    Do you need area code information?
    Do you need ZIP Code information?
    Do you need ZIP+4 information?
    Do you need city name information?
    Do you need county information?
    Do you need a nearest dealer locator system?

    We can HELP! We have affordable AS/400 software and data to do all of the above. Whether you need a simple city name retrieval system or a sophisticated CASS postal coding system, we have it for you!

    The ZIP/CITY system is based on 5-digit ZIP Codes. You can retrieve city names, state names, county names, area codes, time zones, latitude, longitude, and more just by knowing the ZIP Code. We supply information on all the latest area code changes. A nearest dealer locator function is also included. ZIP/CITY includes software, data, monthly updates, and unlimited support. The cost is $495 per year.

    PER/ZIP4 is a sophisticated CASS certified postal coding system for assigning ZIP Codes, ZIP+4, carrier route, and delivery point codes. PER/ZIP4 also provides county names and FIPS codes. PER/ZIP4 can be used interactively, in batch, and with callable programs. PER/ZIP4 includes software, data, monthly updates, and unlimited support. The cost is $3,900 for the first year, and $1,950 for renewal.

    Just call us and we’ll arrange for 30 days FREE use of either ZIP/CITY or PER/ZIP4.

    WorksRight Software, Inc.
    Phone: 601-856-8337
    Fax: 601-856-9432
    Email: software@worksright.com
    Website: www.worksright.com

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    For LANSA, 3-Way Product Data Synch is as Easy as ABI EC Kronos Tackles Unscheduled Absenteeism with Labor Software

    Leave a Reply Cancel reply

Volume 5, Number 40 -- October 26, 2005
THIS ISSUE
SPONSORED BY:

Advanced Systems Concepts
Linoma Software
WorksRight Software

Table of Contents

  • How to Count with SQL
  • Those Stupid Quotation Marks!
  • Admin Alert: New TCP/IP Functions to Check Out When Upgrading to i5/OS V5
  • Correction: Bugged by the Bugged by Interactive Debugger Tip

Content archive

  • The Four Hundred
  • Four Hundred Stuff
  • Four Hundred Guru

Recent Posts

  • Public Preview For Watson Code Assistant for i Available Soon
  • COMMON Youth Movement Continues at POWERUp 2025
  • IBM Preserves Memory Investments Across Power10 And Power11
  • Eradani Uses AI For New EDI And API Service
  • Picking Apart IBM’s $150 Billion In US Manufacturing And R&D
  • FAX/400 And CICS For i Are Dead. What Will IBM Kill Next?
  • Fresche Overhauls X-Analysis With Web UI, AI Smarts
  • Is It Time To Add The Rust Programming Language To IBM i?
  • Is IBM Going To Raise Prices On Power10 Expert Care?
  • IBM i PTF Guide, Volume 27, Number 20

Subscribe

To get news from IT Jungle sent to your inbox every week, subscribe to our newsletter.

Pages

  • About Us
  • Contact
  • Contributors
  • Four Hundred Monitor
  • IBM i PTF Guide
  • Media Kit
  • Subscribe

Search

Copyright © 2025 IT Jungle