How to get the COUNT(*) based on two conditions [duplicate]

孤街醉人 提交于 2020-02-16 09:00:33

问题


I am having trouble in getting the count(*) based on the condition.

Following is my data

id | user_id | key        | value
---+---------+------------+-------------------------
 1 |    3434 | first_name | Brandon
 2 |    3434 | last_name  | Johnson,Brett,Jack
 3 |    3434 | street_add | 123 main
 4 |    3434 | city       | ocean beach
 5 |    3434 | state      | Texas

My query is

SELECT
    COUNT(*)
from
    CUSTOMER c
where
    c.key = 'last_name'
    and
    c.value;

I can't pass c.value to the query like c.value = Johnson,Brett,Jack as it can change randomly each time. So it has to be generic.

I am expecting the value should be 3 it has 3 value Johnson,Brett,Jack. But I keep getting different errors each time.

2nd question

I also want to assign it to a variable Like below

DECLARE
idNumber PLS_INTEGER;

BEGIN

    Select
        COUNT(*)
    into
        idNumber
    from 
        CUSTOMER c
    where
        c.key = 'last_name'
        and
        c.value;

    DBMS_OUTPUT.PUT_LINE('ID NUMBER ' || idNumber);

END;


回答1:


I believe you need something like

select count(*)
  from customer c
 where c.key = 'lastName'
   and c.value in ('Johnson', 'Brett', 'Jack')

so you can count all the customers with last names including Johnson, Brett and Jack.

With you current data model, if you want to find all people with a specific firstName and lastName you must join two instances of customer table as

select count(*)
  from customer c1
  join customer c2 on c1.user_id = c2.user_id
 where c1.key = 'firstName'
   and c2.key = 'lastName'
   and c1.value = 'John'
   and c2.value = 'Doe'

and it goes more complex if you need to search upon more fields.

By the way, why do you use such a data-model in an RDBMS? If you have an schema-less model, why don't you use a NoSQL database such as Mongo?



来源:https://stackoverflow.com/questions/59461713/how-to-get-the-count-based-on-two-conditions

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!