Reputation: 97
I made a query from view table in phpMyAdmin
. When I tried to do query, the result was error. Here is my query:
SELECT TahunMasuk,
COUNT(CASE WHEN `JenisKelamin`=`Perempuan`) AS `Perempuan`,
COUNT(CASE WHEN `JenisKelamin`=`Laki-laki`) AS `Laki-laki`
FROM jeniskelaminreal
GROUP BY TahunMasuk;
The error message is
#1054 - Unknown column 'Perempuan' in 'field list'
I use left join
in my view table. Here is my view table named jeniskelaminreal
What may I do so that I can get the result? Thank you in advance
Upvotes: 0
Views: 122
Reputation: 2254
as per mysql documentation the syntax is
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
or
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
your query look like this
SELECT TahunMasuk,
COUNT(CASE WHEN `JenisKelamin`='Perempuan' THEN 1 END) AS 'Perempuan',
COUNT(CASE WHEN `JenisKelamin`='Laki-laki' THEN 1 END) AS 'Laki-laki'
FROM jeniskelaminreal
GROUP BY TahunMasuk;
and also you can do this way by using field()
with sum()
to count those results
SELECT TahunMasuk,
SUM(FIELD(JenisKelamin,Perempuan)) AS 'Perempuan',
SUM(FIELD(JenisKelamin,Laki-laki)) AS 'Laki-laki'
FROM jeniskelaminreal
GROUP BY TahunMasuk;
Upvotes: 0
Reputation: 2197
Replace ` with ' in 'Perempuan'
and 'Laki-laki'
SELECT TahunMasuk,
COUNT(CASE WHEN `JenisKelamin`='Perempuan' THEN 1 END) AS 'Perempuan',
COUNT(CASE WHEN `JenisKelamin`='Laki-laki' THEN 1 END) AS 'Laki-laki'
FROM jeniskelaminreal
GROUP BY TahunMasuk;
Upvotes: 1
Reputation: 217
CASE
statement is missing ELSE
part and back quote is also a problem, so it should be like this.
SELECT TahunMasuk,
COUNT(CASE WHEN `JenisKelamin`='Perempuan' THEN 1 END) AS `Perempuan`,
COUNT(CASE WHEN `JenisKelamin`='Laki-laki' THEN 1 END) AS `Laki-laki`
FROM jeniskelaminreal
GROUP BY TahunMasuk;
Upvotes: 0
Reputation: 1269513
You are missing the THEN
and END
keywords. Also, the string constants need to be enclosed in single quotes:
SELECT TahunMasuk,
COUNT(CASE WHEN JenisKelamin = 'Perempuan' THEN 1 END) AS `Perempuan`,
COUNT(CASE WHEN JenisKelamin = 'Laki-laki' THEN 1 END) AS `Laki-laki`
FROM jeniskelaminreal
GROUP BY TahunMasuk;
MySQL (which you appear to be using) has a convenient shorthand:
SELECT TahunMasuk,
SUM(CJenisKelamin = 'Perempua') AS Perempuan,
SUM(JenisKelamin = 'Laki-laki') AS `Laki-laki`
FROM jeniskelaminreal
GROUP BY TahunMasuk;
Upvotes: 1
Reputation: 204746
A case
has the following syntax:
COUNT(CASE WHEN `JenisKelamin`= 'Perempuan' THEN 1 ELSE null END) AS `Perempuan`
or since the else
part is null
by default:
COUNT(CASE WHEN `JenisKelamin`= 'Perempuan' THEN 1 END) AS `Perempuan`
In MySQL you could also do
SUM(JenisKelamin = 'Perempuan') AS `Perempuan`
Also string are delimited by quotes and not backticks.
Upvotes: 1
Reputation: 30809
You are using backticks instead of double quotes while comparing the value. Also, your CASE
statements are missing THEN
and END
, try the following:
SELECT TahunMasuk,
COUNT(CASE WHEN `JenisKelamin`='Perempuan' THEN 1 END) AS 'Perempuan',
COUNT(CASE WHEN `JenisKelamin`='Laki-laki' THEN 1 END) AS 'Laki-laki'
FROM jeniskelaminreal
GROUP BY TahunMasuk;
Upvotes: 1