Моя проблема с подсчетом SQL - PullRequest
1 голос
/ 03 августа 2011

У меня есть GENDER и столбец Marital_status для хранения данных в целочисленных значениях

Пол:

  1. Мужской
  2. Женский

Семейное положение:

  1. Single
  2. Widow
  3. Женат

Я хочу показать отчет, сколько мужчин и женщин в этой таблице. также как и семейное положение. Мне нужен один запрос для этой отчетности.

Как, граф (мужчина) = 100 и граф (женщина) = 140 это.

Как, граф (женатый) = 120, граф (одиночный) = 100 и граф (ветровый) = 10 это.

Пожалуйста, дайте мне решение Mysql / PHP.

Детализация данных столбца ..

| Пол | Семейное положение |

1               2
1               3
2               2
2               1

Спасибо

Ответы [ 3 ]

6 голосов
/ 03 августа 2011

Обычная уловка - использовать SUM вместо COUNT и поместить в SUM выражение, которое равно 1 в строках, которые вы хотите считать, 0 в противном случае. СУММА 1 равна СЧЕТУ из них.

SELECT
  SUM(Gender=1) AS Male_Count,
  SUM(Gender=2) AS Female_Count,
  SUM(Marital_status=1) AS Single_Count,
  SUM(Marital_status=2) AS Widowed_Count,
  SUM(Marital_status=3) AS Married_Count
FROM mytable;

В MySQL логическое выражение (например, сравнение на равенство) возвращает 1 или 0. Это не так в стандартном ANSI SQL или в большинстве других реализаций СУБД, поэтому вам придется записывать более длинные CASE выражения если вы хотите поддерживать стандарты.

1 голос
/ 03 августа 2011

ты о

 SELECT gender,status,count(*) FROM table GROUP BY gender,status
1 голос
/ 03 августа 2011
select
sum(case when gender = 1 then 1 else 0 end) as male,
sum(case when gender = 2 then 1 else 0 end) as female,
sum(case when gender = 1 and status = 1 then 1 else 0 end) as male_singles,
.... and so on
from table
...