MySQL: Räkna förekomster av visst värde?

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Höganäs
  • 2005-06-01 09:28

Förutsättningar:
Tabell "resultat":

mysql> describe resultat; 
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(11)      |      | PRI | NULL    | auto_increment |
| kortNr     | int(11)      |      |     | 0       |                |
| tavlingsid | int(11)      |      |     | 0       |                |
| resultat   | int(11)      |      |     | 0       |                |
| jmf        | mediumint(6) |      |     | 0       |                |
| trend      | tinyint(4)   |      |     | 0       |                |
+------------+--------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

Värdet i "trend" är antingen -1, 0 eller 1.

En skytt (för det är skytteresultat det handlar om) kan ha ett antal -1 (nedklassning) och ett antal 1 (uppklassning). Resultaten kopplas till resp. skytt med "kortNr"

Hur skriver jag en SELECT-sats som räknar antalet mindre än 0 och antalet större än 0 för en viss skytt ?

SELECT ??? FROM resultat WHERE kortNr = '1000';

  • Medlem
  • 2005-06-01 09:41

SELECT COUNT(*) FROM resultat WHERE kortNr = '1000' AND trend = -1;

  • Medlem
  • Stockholm
  • 2005-06-01 10:02

SELECT trend,COUNT(*) FROM resultat WHERE kortNr = '1000' GROUP BY trend;

... så får du alla -1, 0 och 1 summerade i samma query.

  • Medlem
  • Höganäs
  • 2005-06-01 22:58
Ursprungligen av pesc:

SELECT trend,COUNT(*) FROM resultat WHERE kortNr = '1000' GROUP BY trend;

... så får du alla -1, 0 och 1 summerade i samma query.

Funkade bra. Tack!

mysql> SELECT trend, COUNT(trend) 
FROM resultat 
WHERE kortNr = '1000' 
GROUP BY trend;
+-------+--------------+
| trend | COUNT(trend) |
+-------+--------------+
|    -1 |            1 |
|     0 |            5 |
|     1 |            1 |
+-------+--------------+
3 rows in set (0.00 sec)

Föresten: Är det någon fördel att bara räkna "trend" enligt följande?:

SELECT trend, COUNT(trend) FROM resultat WHERE kortNr = '1' GROUP BY trend
jmf.
SELECT trend, COUNT(*) FROM resultat WHERE kortNr = '1' GROUP BY trend

1
Bevaka tråden