On Thursday 20 February 2003 02:17 pm, Ajay Patel wrote:
> I have a host table where I save the platform model. The platform model
> can be saved in various ways. For example,
> 
> Sun Enterprise 250 (2 x UltraSPARC 164MHz)
> Sun Enterprise 250 (2 x UltraSPARC-II 400MHz)
> Sun Enterprise 250 (2 x UltraSPARC-II 450MHz)
> Sun 250
> 
> etc. I can get the count by:
> 
> select platformmodel, count(*) from host
> where platformmodel like '%250'
> group by platformmodel;
> 
> This gives me the counts for each of the above models. 
> 
> Sun Enterprise 250 (2 x UltraSPARC 164MHz)            4
> Sun Enterprise 250 (2 x UltraSPARC-II 400MHz)         100
> Sun Enterprise 250 (2 x UltraSPARC-II 450MHz)         3
> Sun 250                                                       1000
> 
> Since they are the same model I would rather have a single line output 
giving
> me the sum of all of the above counts. That is,
> 
> Sun E250      1107
> 
> Is there a quick and easy way to do this?
> 
> To complicate it a little bit, how about getting the sum for all different
> platform types. The following query:
> 
> select platformmodel, count(*) from host
> group by platformmodel;
> 
> gives me this result:
> 
> +----------------------------------------------------+----------+
> | platformmodel                                      | count(*) |
> +----------------------------------------------------+----------+
> | 16-slot Sun Enterprise 6000                        |      174 |
> | 16-slot Sun Enterprise E6500                       |      728 |
> | 16-slot Ultra Enterprise 6000                      |        4 |
> | 4-slot Sun Enterprise 3000                         |      310 |
> | 4-slot Ultra Enterprise 3000                       |       17 |
> | 420R (4 X UltraSPARC-II 450MHz)                    |        2 |
> | 5-slot Sun Enterprise E3500                        |      657 |
> | 8-slot Sun Enterprise 4000/5000                    |      659 |
> | 8-slot Sun Enterprise E4500/E5500                  |     1939 |
> | 8-slot Ultra Enterprise 4000/5000                  |       19 |
> 
> and so on. As you can see, due to the platform type being entered
> differently, I cannot group them correctly. The preferred output
> would be:
> 
> +----------------------------------------------------+----------+
> | platformmodel                                      | count(*) |
> +----------------------------------------------------+----------+
> | Sun Enterprise 6000                                |      178 |
> | 16-slot Sun Enterprise E6500                       |      728 |
> | Sun Enterprise 3000                                |      317 |
> 
> and so.
> 
> Can this be done in SQL or would I have to script it?

Ajay:

You can try GROUP BY SUBSTRING(platformmodel, LOCATE(' ',platformmodel)+1))

A strategically more efficient although more labor-intensive solution would 
be to reorganize the data splitting the platformmodel column into smaller 
parts to facilitate searches.


-- 
MySQL Development Team
For technical support contracts, visit https://order.mysql.com/?ref=mspa
   __  ___     ___ ____  __ 
  /  |/  /_ __/ __/ __ \/ /   Sasha Pachev <[EMAIL PROTECTED]>
 / /|_/ / // /\ \/ /_/ / /__  MySQL AB, http://www.mysql.com/
/_/  /_/\_, /___/\___\_\___/  Provo, Utah, USA
       <___/                  

MySQL Users Conference and Expo
http://www.mysql.com/events/uc2003/

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to